junit Java私有方法保护与缺省方法保护

m4pnthwp  于 2022-11-11  发布在  Java
关注(0)|答案(1)|浏览(142)

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));
    }
}

我寻找的答案不是如何绕过这个约束,而是盲目地遵循一个没有任何回报的一揽子指令会得到什么。

puruo6ea

puruo6ea1#

Java中的默认作用域是包私有作用域,这意味着同一包中的所有类都可以使用这个方法。如果你将它限制为私有,那么只有同一个类中的方法才可以使用它。这就是我们的收获。这是你的决定,你是否需要将这个方法公开给其他类,或者仅仅将它保持私有就足够了,但不要仅仅为了测试目的而公开某些东西。

相关问题