问题
I was going through the documentation for junit tests but am unable to understand the need for defining tests as public.Could anyone share some info on this?
I read on https://github.com/junit-team/junit/blob/master/src/main/java/org/junit/Test.java
But am still not clear with the reason.
With is I meant why can't I write something as
@Test
private void testAdd(){ }
回答1:
The JUnit framework calls your test methods from outside your test class. If your test methods are private, it won't be able to do that.
回答2:
JUnit accesses your test methods by reflection. A SecurityManager can control access to private methods. Hence JUnit uses only public methods and fields for anything that is accessed by the framework.
In short: JUnit would fail to run private test methods if a SecurityManager is active that does not allow access to private methods.
回答3:
"Test classes, test methods, and lifecycle methods are not required to be public, but they must not be private."
Ref. the doc: https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods
回答4:
try
@Test
public void testAdd(){ }
your testAdd method is private, it won't be able to do that.
来源:https://stackoverflow.com/questions/19286403/why-should-test-methods-in-junit-be-defined-public