我有一个 class FileGenerator
,我正在为generateFile()
应该执行以下操作的方法编写测试:
1)它应该调用静态getBlockImpl(FileTypeEnum)
方法BlockAbstractFactory
blockList
2)它应该从子类方法中填充变量getBlocks()
3) 它应该从传递 String 参数createFile
的最终辅助类调用静态方法FileHelper
4)它应该调用BlockController
blockList中每个的run方法
到目前为止,我有这个空方法:
public class FileGenerator {
// private fields with Getters and Setters
public void generateBlocks() {
}
}
我正在使用 JUnit、Mockito 来模拟对象,并且我尝试使用 PowerMockito 来模拟静态和最终类(Mockito 不这样做)。
getBlockList()
我的问题是:我的第一个测试(从调用方法BlockAbstractFactory
)通过了,即使generateBlocks()
. 我已经在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());
}
}