为什么 Junit 测试用例(方法)应该是 public?

Why Junit test cases(Methods) should be public?

我只想知道为什么测试用例(测试方法)应该是public 像这样

public class SpiceLoginTest {
    @Test
    public void testShouldVerifyLoginRequest() {
    }  
}

但是如果我从此方法中删除 public 访问说明符

    @Test
    void testShouldVerifyLoginRequest() {
    }

输出:java.lang.Exception:方法 testShouldVerifyLoginRequest() 应该是 public

所以

  1. 幕后发生了什么?

  2. 是用反射还是什么?

是的,测试运行器正在幕后使用反射来找出您的测试方法是什么以及如何调用它们。

如果方法不是 public,调用它们可能会失败(因为 SecurityManager 会否决)。

这几乎可以肯定是因为 JUnit 创建了一些 main class 来为您调用所有测试方法。要调用它们,它们需要 public.