Why should Test methods in Junit be defined public?

前提是你 提交于 2019-12-04 00:36:07

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!