【发布时间】:2014-10-07 06:36:20
【问题描述】:
我有一个方法应该返回 HashMap 类型的结果,我需要对它进行单元测试。 该方法应该接收一个字符串并显示每三个字符的出现。
public HashMap<String,Integer> findOccurences(String myStr){
return null;
}
我需要知道如何使用 Mockito 为其编写单元测试。
public class TestMySubString {
@Mock
private static MySubString mockedMySub;
private static String str;
private static HashMap<String,Integer> result;
@BeforeClass
public static void setUp(){
str = "This This";
result.put(" Th", 1);
result.put("s T",1);
result.put("his",2);
result.put("Thi ",2);
result.put("is ",1);
when(mockedMySub.findOccurences(str)).thenReturn(result);
}
@Test
public void testFindOccurences() {
HashMap<String,Integer> myResult = mockedMySub.findOccurences(str);
//assertReflectionEquals(result,myResult);
}
基于 question 我使用了 assertReflectionEquals 但它仍然返回错误。
【问题讨论】:
-
你能发个错误吗?
-
再看看你链接到的问题。比较不在地图之间,而是在循环检查每个条目。
-
没有。您不应该嘲笑您要测试的课程。模拟就是要消除类的副作用,而不是您正在测试的类。你做错了。
-
@DavidWallace 那么我应该如何测试它?
-
尝试清楚地表达该方法应该做什么。然后编写适当的输入来测试它是否真的做了它应该做的事情,并计算出预期的输出。然后编写一个测试,使用正确的输入调用该方法,并将输出与您的预期进行比较。但出发点始终是清楚地了解该方法的用途。
标签: java unit-testing junit tdd mockito