【发布时间】:2013-03-18 17:31:46
【问题描述】:
我有一个 FileGenerator 类,我正在为 generateFile() 方法编写一个测试,该方法应该执行以下操作:
1) 它应该调用 BlockAbstractFactory 上的静态方法 getBlockImpl(FileTypeEnum)
2) 它应该从子类方法 getBlocks() 中填充变量 blockList
3) 它应该从最终的辅助类 FileHelper 调用静态方法 createFile,并传递一个 String 参数
4) 它应该调用blockList中每个BlockController的run方法
我正在尝试使用 TDD 来测试我方法的最后一个场景。我有一个实现 Runnable 的 BlockController 对象的列表,我需要验证每个对象是否调用了 run() 方法。
这是我想要做的:
public class FileGenerator {
// private fields with Getters and Setters
public void generateBlocks() {
// 1,2 get the block manager that will return the BlockController list
blockManager = BlockAbstractFactory.getManager(fileType);
blockList = blockManager.getBlocks();
// create a file using FileHelper
FileHelper.createFile(path);
// What I want to test:
// for each BlockController in the blockList, call the run() method
}
}
我正在使用 Junit 和 Mockito。在 Mockito 的文档中,它们只展示了如何模拟 List 并验证 List 上的方法调用(例如 add(T)、remove(T) 等),而不是它的对象。
知道我该怎么做吗?
【问题讨论】: