在任何junit测试运行之前执行一些代码

ska*_*kov 6 java junit

我有很多基本执行相同的单元测试文件@BeforeClass.

他们启动jetty web服务器,添加一些系统属性.

所以我想知道,在单元测试运行之前,是否有可能只执行一次?

Mat*_*att 10

您可以使用@RunWith注释:

@RunWith(JettyRunner.class)
public class MyAwesomeTest {
    @Test
    //...
}
Run Code Online (Sandbox Code Playgroud)

并实施一个新的Runner

public class JettyRunner extends BlockJUnit4ClassRunner {
    private static boolean initialized = false;

    public JettyRunner(Class<?> klass) throws InitializationError {
        super(klass);

        synchronized (JettyRunner.class) {
            if (!initialized) {
                System.out.println("Let's run jetty...");
                initialized = true;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我不确定是否真的需要同步块,只是把它扔进去了...