我有一个名为
1) 它应该调用
4) 它应该调用blockList中每个
到目前为止,我的方法为空:
我正在使用JUnit,Mockito来模拟对象,并尝试使用PowerMockito来模拟静态和final类(Mockito无法做到这一点)。
我的问题是:即使在generateBlocks()中没有实现任何内容,在第一个测试中(调用BlockAbstractFactory中的getBlockList()方法)也通过了。 我已经在BlockAbstractFactory中实现了静态方法(到目前为止返回null),以避免Eclipse语法错误。
如何测试是否在fileGerator.generateBlocks()中调用了静态方法?
以下是我的测试类目前的代码:
FileGenerator
的类,我正在为generateFile()
方法编写测试,它应该执行以下步骤:1) 它应该调用
BlockAbstractFactory
上的静态方法getBlockImpl(FileTypeEnum)
2) 它应该通过子类方法getBlocks()
填充变量blockList
3) 它应该调用来自最终帮助程序类FileHelper
的静态方法createFile
,并传递一个字符串参数4) 它应该调用blockList中每个
BlockController
的运行方法。到目前为止,我的方法为空:
public class FileGenerator {
// private fields with Getters and Setters
public void generateBlocks() {
}
}
我正在使用JUnit,Mockito来模拟对象,并尝试使用PowerMockito来模拟静态和final类(Mockito无法做到这一点)。
我的问题是:即使在generateBlocks()中没有实现任何内容,在第一个测试中(调用BlockAbstractFactory中的getBlockList()方法)也通过了。 我已经在BlockAbstractFactory中实现了静态方法(到目前为止返回null),以避免Eclipse语法错误。
如何测试是否在fileGerator.generateBlocks()中调用了静态方法?
以下是我的测试类目前的代码:
@RunWith(PowerMockRunner.class)
public class testFileGenerator {
FileGenerator fileGenerator = new FileGenerator();
@Test
public void shouldCallGetBlockList() {
fileGenerator.setFileType(FileTypeEnum.SPED_FISCAL);
fileGenerator.generateBlocks();
PowerMockito.mockStatic(BlockAbstractFactory.class);
PowerMockito.verifyStatic();
BlockAbstractFactory.getBlockImpl(fileGenerator.getFileType());
}
}
FileGenerator fileGenerator = new FileGenerator();
,而不是作为你测试类的成员。使用你当前的实现方式,你将会在你的测试类中共享已经实例化的fileGenerator
(假设你也想要独立的测试)。 - basBlockAbstractFactory
中的静态方法吗? - bas