How do you Test Getter and Setter Interface in Java using Mockit

  • 时间:2020-09-08 11:08:55
  • 分类:网络文摘
  • 阅读:123 次

Usually, we unit tests the logics. An interface is without implementation details. A interface is just a binding a contract, but still, we can use Mockito to mock the interface, and test it.

For example, given the following simple Setter and Getter Interface:

1
2
3
4
interface GetAndSet {
    void setValue(String name);
    String getValue();
}
interface GetAndSet {
    void setValue(String name);
    String getValue();
}

We can test it like this – thanks to the Mockito mocking framework in Java. We use doAnswer method to intercept the invokation of a interface method i.e. setter, then at the time, we mock the getter.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.helloacm;
 
import lombok.val;
import org.junit.jupiter.api.Test;
 
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*;
 
interface GetAndSet {
    void setValue(String name);
    String getValue();
}
 
public class ExampleTest {
    @Test
    public void test_simple_getter_setter_interface() {
        val instance = mock(GetAndSet.class);
 
        doAnswer(invocation -> {
            // or use invocation.getArgument(0);
            val name = (String)invocation.getArguments()[0];
            when(instance.getValue()).thenReturn(name);
            return null;
        }).when(instance).setValue(anyString());
 
        instance.setValue("HelloACM.com");
        assertEquals("HelloACM.com", instance.getValue());
    }
}
package com.helloacm;

import lombok.val;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*;

interface GetAndSet {
    void setValue(String name);
    String getValue();
}

public class ExampleTest {
    @Test
    public void test_simple_getter_setter_interface() {
        val instance = mock(GetAndSet.class);

        doAnswer(invocation -> {
            // or use invocation.getArgument(0);
            val name = (String)invocation.getArguments()[0];
            when(instance.getValue()).thenReturn(name);
            return null;
        }).when(instance).setValue(anyString());

        instance.setValue("HelloACM.com");
        assertEquals("HelloACM.com", instance.getValue());
    }
}

If the method we are mocking is not void – we can use when. For example:

1
2
3
when(instance.getValue()).thenAnswer(innocation -> {
     return "Hello";
});
when(instance.getValue()).thenAnswer(innocation -> {
     return "Hello";
});

–EOF (The Ultimate Computing & Technology Blog) —

推荐阅读:
SEO优化网站诊断的几个技巧,你知道多少?  bootstrap响应式导航激活高亮,dedecms导航代码分享  为什么自媒体比SEO更火?答案都在这里  发外链还管用么?2020年还能用的外链策略  新网站关键词排名不稳定的原因分析  网站快速收录的方式有哪些  百度只收录主域但不收录带www的域名的解决方法  谷歌网站排名,内容与页面体验,谁更重要?  不成功决不罢手作文800字  感秋雨四 
评论列表
添加评论