Junit为匿名课程

时间:2016-07-08 11:40:31

标签: junit anonymous

Class ABCD{

private int startProcess(String actualPath) {
    Task<Integer>  runDriverTask = new Task<Integer>() {
    @Override
    protected Integer call() throws Exception {
        int exitCode = -1;
        return 1;
    }
  };
  ....
  ....
}

有人请建议如何编写JUnits来调用call方法。 我必须进行代码覆盖,但无法达到call()方法。 我们可以用什么? Easymock,Power mock,Mockito或其他任何东西。

1 个答案:

答案 0 :(得分:0)

你的问题是你想控制一些完全无法控制的东西。

如果您的“受测试代码”创建了它正在处理的对象(如果您执行“新WhateverClass”或“请使用新的匿名类实例”,则无关紧要。

因此,如果您必须获得控制权,唯一的良好方式是转向依赖注入为您测试的代码提供预先创建的对象(请参阅{ {3}}有关如何/为何如此做的更多信息)。

除此之外,您可能还可以创建一个为您创建此类任务的工厂 - 然后您可以为工厂编写单元测试;只是创建任务并检查其属性。