匿名类的Junit 类ABCD{ 私有int startProcess(字符串实际路径){ 任务runDriverTask=新任务(){ @凌驾 受保护的整数调用()引发异常{ int exitCode=-1; 返回1; } }; .... .... }

匿名类的Junit 类ABCD{ 私有int startProcess(字符串实际路径){ 任务runDriverTask=新任务(){ @凌驾 受保护的整数调用()引发异常{ int exitCode=-1; 返回1; } }; .... .... },junit,anonymous,Junit,Anonymous,有人建议如何编写JUnits来调用调用方法。 我必须进行代码覆盖,但无法达到call()方法。 我们可以用什么?Easymock、Power mock、Mockito或其他任何东西。你的问题是,你想控制一些完全无法控制的东西 如果你的“测试中的代码”创建了它正在处理的对象(不管你是“新建WhateverClass”还是“新建匿名类实例”) 因此,如果您必须获得控制权,唯一的好方法是使用依赖注入为测试代码提供预先创建的对象(有关如何/为什么这样做的更多信息,请参阅) 除此之外,您可能还可以创建一个

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

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

如果你的“测试中的代码”创建了它正在处理的对象(不管你是“新建WhateverClass”还是“新建匿名类实例”)

因此,如果您必须获得控制权,唯一的好方法是使用依赖注入为测试代码提供预先创建的对象(有关如何/为什么这样做的更多信息,请参阅)


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

您的问题是,您想要控制一些完全不受您控制的东西

如果你的“测试中的代码”创建了它正在处理的对象(不管你是“新建WhateverClass”还是“新建匿名类实例”)

因此,如果您必须获得控制权,唯一的好方法是使用依赖注入为测试代码提供预先创建的对象(有关如何/为什么这样做的更多信息,请参阅)


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

如果您需要测试
runDriverTask
,您需要将其重构为一个单独的类。但是为什么不测试
startProcess(actualPath)
够了吗?如果你需要测试
runDriverTask
,你需要将它重构成一个单独的类。但是为什么测试
startProcess(actualPath)
还不够呢?
Class ABCD{

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