可以使用jmockit

时间:2016-07-13 19:07:45

标签: jmockit

这是我的问题:我正在测试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); }};
}

1 个答案:

答案 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...
    }
}