我是单元测试新手,最近尝试了 JUnit 测试和 Mockito。
我正在尝试对一个调用多个私有(private)方法并创建其他类的私有(private)对象的方法进行单元测试。
如何对该方法进行单元测试。
例如,如果我有以下代码:
class ClassToTest {
private OuterClass outerClass;
public Boolean function() {
outerClass = new OuterClass(20);
return innerFunction(outerClass.getValue());
}
private Boolean innerFunction(int val) {
if (val % 2 == 0)
return true;
return false;
}
}
我很困惑如何测试公共(public)功能。
最佳答案
方法如何实现并不重要;该方法应该有一个它遵守的契约,并且这就是您通过测试验证的内容。在此示例中,如果 outerClass
的值为偶数,则 function()
应返回 true
。实现此目的的一种方法是注入(inject)(传递到 ClassToTest
构造函数中)outerClass
的实例,以便您可以在测试时控制该值:
@Test
public void trueWhenEven() {
var outer = new OuterClass(2);
var ctt = new ClassToTest(outer);
assertTrue(ctt.function());
}
有时契约只是一个方法调用某些其他对象上的方法;在这种情况下,您可以使用 Mockito 或类似的库来验证交互。
关于java - 单元测试调用Java中私有(private)方法和其他对象的公共(public)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54954550/