【发布时间】:2014-07-25 22:22:15
【问题描述】:
我的意图是对私有方法进行单元测试,并且我了解如何导入 @VisibleForTesting 并将其用于私有方法。我进行了相当多的搜索,但无法看到演示此功能的完整示例。
例如:
class MyClass {
@VisibleForTesting
private double[] getWorkArray(double[] values,int length) {
:
:
return <some double array>
}
}
现在在 JUnit 中,我必须能够做到
@Test
public void testProvateMethod() {
MyClass object = new MyClass();
assertNotNull(object.getWorkArray(...);
}
但困难的部分是我无法理解/执行以下操作 a) maven 编译器插件的片段,用于包含相关的注释处理器 b) 实际上能够测试私有方法。 (因为它会引发与方法可见性相关的错误)
我在 JUnit 中编写测试时无法执行此操作(由于私有访问错误)。例如:mvn clean test
请提供一个完整的示例,说明完成私有方法的 JUnit 测试所涉及的所有步骤。
【问题讨论】:
-
不要这样做。通过公共方法测试私有方法。如果这太复杂,则表明您在班级中承担了太多责任。考虑提取一个类,它将以前的私有方法公开为公共方法。
-
这里的问题是2折。
-
这里的问题是关于给定开始和结束索引的数组的简单转换,我认为这比在代码中我需要的每个地方内联这些行更值得我自己的方法。还有一点相关:假设我将这些相关方法提取到私有静态嵌套类中;我将如何测试 privat 静态类的方法。
标签: java maven unit-testing guava