这是我的问题:我正在测试UnderTest类,它扩展了SuperClass。 SuperClass有一个私有地图(“myMap”)和一个感觉它的私有方法。当我使用new()构造函数创建UnderTest类的实例时,超类的myMap没有被初始化(在Reality中这是由整个系统的框架完成的,我无法为测试的原因做到这一点) )。 运行测试时我接收到NullPointerException,因为map == null; 我试着用invoke()来模拟这个方法,但是我做错了,因为我仍然得到了同样的异常。我的错误在哪里
public class UnderTest extends SuperClass
{
public void methodUnderTest()
{....
put(str, obj);
....}
}
public class SuperClass
{
private Map<String, Object> myMap;
private void innerMethod (String str, Object obj)
{.... myMap.put(str, obj);}
}
该课程使用jmockit
运行Class ThestSomething{
@Mocked
SuperClas superClass;
@BeforeMethod
public void setUp
{
UnderTest underTest = new UnderTest();
}
@Test
public void testThis()
{
new Expectetions {{ invoke("superClass", "innerMethod", str, obj); }};
}
答案 0 :(得分:0)
而不是模拟,在测试中创建一个正确初始化的对象:
public class ExampleTest {
@Tested HashMap<String, Object> myMap;
@Tested(fullyInitialized = true) UnderTest underTest;
@Test
public void example() {
underTest.methodUnderTest();
assertEquals(<expected value>, myMap.get("expected key"));
// other assertions...
}
}