假设以下是被测试的类:
public class MyClass {
public void doSomething() throws FileNotFoundException {
FileInputStream fis = new FileInputStream( "someFile.txt" );
// .. do something about fis
}
}
当使用参数“someFile.txt”调用方法
使用 jMockit?doSomething()
时,如何验证构造函数FileInputStream( String )
是否被调用
我不是在寻找手动或非自动的答案。我正在寻找一个答案,该答案使用 JUnit 或 TestNG 等工具,借助模拟和 spy 工具(最好是 jMockit)进行自动化单元测试。
最佳答案
使用 JMockit Expectations API,测试可以验证构造函数调用,就像验证方法调用一样。测试只需将类指定为@Mocked即可。例如:
@Test
public void exampleTestThatVerifiesConstructorCall(@Mocked FileInputStream anyFIS)
{
new MyClass().doSomething();
new Verifications() {{ new FileInputStream("someFile.txt"); }};
}
也就是说,我建议避免模拟像 FileInputStream 这样的低级类,它们通常只是被测试类的内部实现细节。更好的测试将使用实际文件并以某种方式检查它是否按预期读取。
关于java - 如何验证给定类的特定构造函数是否被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32581996/