gpt4 book ai didi

java - jUnit 4.x 中的前后套件执行 Hook

转载 作者:IT老高 更新时间:2023-10-28 11:42:28 25 4
gpt4 key购买 nike

我正在尝试为一组集成测试进行设置和拆卸,使用 jUnit 4.4 来执行测试。拆解需要可靠地运行。我在使用 TestNG 时遇到了其他问题,所以我希望移植回 jUnit。在运行任何测试之前和完成所有测试之后,哪些钩子(Hook)可用于执行?

注意:我们使用 maven 2 进行构建。我尝试过使用 maven 的 pre-post-integration-test 阶段,但是,如果测试失败,maven 会停止并且不运行 post-integration -test,没有任何帮助。

最佳答案

是的,可以在测试套件中的任何测试之前和之后可靠地运行设置和拆除方法。让我用代码演示一下:

package com.test;

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

@RunWith(Suite.class)
@SuiteClasses({Test1.class, Test2.class})
public class TestSuite {

@BeforeClass
public static void setUp() {
System.out.println("setting up");
}

@AfterClass
public static void tearDown() {
System.out.println("tearing down");
}

}

所以你的 Test1 类看起来像:

package com.test;

import org.junit.Test;


public class Test1 {
@Test
public void test1() {
System.out.println("test1");
}

}

...您可以想象 Test2 看起来很相似。如果你运行 TestSuite,你会得到:

setting up
test1
test2
tearing down

因此您可以看到设置/拆卸仅分别在所有测试之前和之后运行。

要注意的是:这仅在您运行测试套件且不将 Test1 和 Test2 作为单独的 JUnit 测试运行时才有效。您提到您正在使用 maven,并且 maven surefire 插件喜欢单独运行测试,而不是套件的一部分。在这种情况下,我建议创建一个每个测试类都扩展的父类(super class)。然后父类(super class)包含带注释的@BeforeClass 和@AfterClass 方法。虽然不如上述方法干净,但我认为它对你有用。

至于测试失败的问题,您可以设置 maven.test.error.ignore 以便在测试失败时继续构建。不建议将这作为一种持续的做法,但它应该让您在所有测试通过之前都能正常工作。有关详细信息,请参阅 maven surefire documentation .

关于java - jUnit 4.x 中的前后套件执行 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/82949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com