【发布时间】:2015-12-11 11:16:27
【问题描述】:
假设下面是被测试的类:
public class MyClass {
public void doSomething() throws FileNotFoundException {
FileInputStream fis = new FileInputStream( "someFile.txt" );
// .. do something about fis
}
}
当使用 jMockit 使用参数 "someFile.txt" 调用方法 doSomething() 时,如何验证构造函数 FileInputStream( String ) 是否被调用?
我不是在寻找手动或非自动的答案。我正在寻找一个答案,它使用 JUnit 或 TestNG 等工具在模拟和间谍工具(最好是 jMockit)的帮助下使用自动化单元测试。
【问题讨论】:
-
如果构造函数没有被正确调用,你应该在调用
fis中的任何方法时得到一些异常 -
“验证”是什么意思?
-
@SajanChandran,没有得到异常并不一定意味着它已经成功调用了特定的构造函数。例如,它本可以什么都不做。
-
那么你的合约不是构造函数被调用。合约是检查文件系统的读取是否发生。该类可以合法地调用
Files.newInputStream( Paths.get("somefile.txt") )并达到要求。 -
@RickvanOsta,我不确定你是否有自动化单元测试的背景。但是,如果我能简单地做到这一点,你不认为我不会在这里发帖吗?
标签: java unit-testing junit testng jmockit