在jUnit 4.x中执行Suite之前和之后的挂钩

我正在尝试使用jUnit 4.4执行一组集成测试的设置和拆卸。拆卸需要可靠地运行。我在使用TestNG时遇到其他问题,因此我希望移植回jUnit。在运行任何测试之前以及在完成所有测试之后,可以使用哪些挂钩执行?

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


慕丝7291255
浏览 507回答 3
3回答

大话西游666

是的,可以在测试套件中进行任何测试之前和之后可靠地运行设置和拆卸方法。让我用代码演示: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 uptest1test2tearing down因此,您可以看到设置/拆卸仅分别在所有测试之前和之后运行。要点:仅当您运行测试套件,而不是将Test1和Test2作为单独的JUnit测试运行时,此方法才有效。您提到您正在使用maven,并且maven surefire插件喜欢单独运行测试,而不是套件的一部分。在这种情况下,我建议创建一个每个测试类都可以扩展的超类。然后,超类包含带注释的@BeforeClass和@AfterClass方法。尽管不如上面的方法那么干净,但我认为它将为您服务。至于失败测试的问题,可以设置maven.test.error.ignore,以便在失败测试中继续构建。不建议您将其作为持续的实践,但是在所有测试通过之前,它应该可以使您正常运行。有关更多详细信息,请参见maven surefire文档。

至尊宝的传说

使用注释,您可以执行以下操作:import org.junit.*;import static org.junit.Assert.*;import java.util.*;class SomethingUnitTest {    @BeforeClass    public static void runBeforeClass()    {    }    @AfterClass    public static void runAfterClass()    {      }    @Before      public void setUp()    {    }    @After    public void tearDown()    {    }    @Test    public void testSomethingOrOther()    {    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java