检测Junit测试类是在套件中运行还是单独运行

jax*_*jax 3 junit

我有一些代码需要在我的测试类之前和之后运行.无论在中间运行多少个测试类,它必须为整个集合运行一次且仅运行一次.

当我在套件中运行时,它在整个套件的开始和结束时调用,这是按预期工作的,但是,我希望能够运行单个测试类.在这种情况下,测试类需要检测它是否单独运行并启动前/后测试代码.

这可能吗?

Jes*_*kum 7

我这样解决了这个问题:

MySuite我添加这个:

    public static Boolean suiteRunning = false;
    @ClassRule
    public static ExternalResource triggerSuiteRunning = new ExternalResource() {
      @Override
      protected void before() throws Throwable {
        suiteRunning = true;
      }
    };
Run Code Online (Sandbox Code Playgroud)

现在,在依赖测试中,我知道套件是否正在运行并且可以禁用测试:

    @BeforeClass
    public static void beforeClass() {
        Assume.assumeTrue(MySuite.suiteRunning);
    }
    // --- or ---
    @Test
    public static void test() {
        Assume.assumeTrue(MySuite.suiteRunning);
    }
Run Code Online (Sandbox Code Playgroud)