How do you Test Getter and Setter Interface in Java using Mockit
- 时间:2020-09-08 11:08:55
- 分类:网络文摘
- 阅读:138 次
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) —
推荐阅读:保健食品:不以治疗疾病为目的! 专家称转基因食品违背生态平衡的天道 海虾与河虾口感差别大 到底怎么分辨食物的“寒热” 番石榴可用于辅助治疗糖尿病 哪些食物是不适合生吃的? 食品论文:中国的食品安全问题 糖炒栗子:警惕非法使用了糖精和石蜡 英国最新研究常喝矿泉水防老年痴呆 煲制鸡汤的营养价值和饮食宜忌
- 评论列表
-
- 添加评论