java junit 没有 main 函数

Bao*_*ris 4 java reflection junit function

我在使用 JUnit 4 时有一个问题。有一件事让我很困惑。为什么下面没有main函数,但是可以执行并返回测试结果?它甚至不扩展一个类。好糊涂……代码如下:

import org.junit.runner.RunWith;    
import org.junit.runners.Suite;    
import org.junit.runners.Suite.SuiteClasses;

@RunWith(Suite.class)    
@SuiteClasses({ ATest.class,BTest.class })    
public class AllTests {

}
Run Code Online (Sandbox Code Playgroud)

Lui*_*ano 5

main 方法(不是函数)在 runner 类中实现。运行器类由 IDE 或构建工具调用,然后运行器加载测试类并执行所有标记的方法(即通过 @Test 注释)。

测试的生命周期比主函数要复杂一些。您可以在执行每个@Test 之前进行准备(@BeforeClass 和@Before 注释方法),然后进行清理(@After 和@AfterClass 注释方法)。

该框架为您提供了比仅具有单个主要方法更多的灵活性。也可以单独运行带注释的测试:您可能有一个庞大的测试套件,但您可能只想在纠正错误的同时重复运行失败的测试;这不能用 main 方法完成(除非你对每个测试都有一个 main 方法)。

如您所见,使用像 JUnit 这样的框架比使用 main 的普通 Java 类有几个优点。