Java问题:我正在处理一个类(称之为ProcessorA,它只扩展Object。它也是无状态的)。它将驻留在Web服务器上的Spring服务中。这个类声明了几个公共方法作为类的API。
我想用一个简单的JUnit测试来测试这个类。我需要测试一个公共方法内部的一些方法调用。但是,在API方法和要测试的方法之间,有几个类将在运行时由Spring加载到Web服务器中。(属于处理器A)。
有人告诉我,这不是最佳做法。
但是,我不知道进一步限制对要测试的方法的访问到底能得到什么。那么,通过将一个方法声明为默认私有方法(比“protected”更具限制性(通过包含也是禁止的))能得到什么呢?\
public class ProcessorA {
public methodA(String input) throws ValidationException {
doSomeValidationStuff(input);
doStuffToTest(input);
}
private doSomeValidationStuff(String input) throws ValidationException {
//Libraries that are not loaded at execution and not available for the JUnit test
}
doStuffToTest(String input) {
//Code to be tested}
}
}
class MyJunitTest {
@Test
void doStuffToTestTest() {
ProcessorA processorA = new ProcessorA();
String testData = "test data String";
assertNotNull( processorA.doStuffToTest(testDate));
}
}
我寻找的答案不是如何绕过这个约束,而是盲目地遵循一个没有任何回报的一揽子指令会得到什么。
1条答案
按热度按时间puruo6ea1#
Java中的默认作用域是包私有作用域,这意味着同一包中的所有类都可以使用这个方法。如果你将它限制为私有,那么只有同一个类中的方法才可以使用它。这就是我们的收获。这是你的决定,你是否需要将这个方法公开给其他类,或者仅仅将它保持私有就足够了,但不要仅仅为了测试目的而公开某些东西。