在junit4中的最后一次测试之后执行全局拆卸方法

在junit4中的最后一次测试之后执行全局拆卸方法,junit,selenium-webdriver,junit4,Junit,Selenium Webdriver,Junit4,我想知道在执行测试之后是否有一种方法可以执行某些方法。 我正在使用eclipse,我希望能够运行部分或全部测试,然后执行一些代码, 所以junit总是在最后一次测试之后执行我的拆卸 具体的问题是,我正在使用SeleniumWebDriver,我希望在所有测试完成后执行webdriver的quit方法。首先,我使用静态类管理webdriver引用,现在我转到singleton模式。我相信会有更好的解决方案,但现在我不想使用任何IoC容器,因为我是java初学者 到目前为止,我尝试了几种方法,但都没

我想知道在执行测试之后是否有一种方法可以执行某些方法。 我正在使用eclipse,我希望能够运行部分或全部测试,然后执行一些代码, 所以junit总是在最后一次测试之后执行我的拆卸

具体的问题是,我正在使用SeleniumWebDriver,我希望在所有测试完成后执行webdriver的quit方法。首先,我使用静态类管理webdriver引用,现在我转到singleton模式。我相信会有更好的解决方案,但现在我不想使用任何IoC容器,因为我是java初学者

到目前为止,我尝试了几种方法,但都没有成功

仅当我执行所有测试时,套装方法才起作用:

@RunWith(Suite.class)
@SuiteClasses({SomeTest.class, OtherTest.class, AnotherTest.class})
    public class TestSuit {

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

    @AfterClass
    public static void tearDown() {
        System.out.println("tearing down");
    }
}
但是,如果我只想运行一个测试类,或者从一个特定名称空间运行所有测试,该怎么办

只有当我的所有测试都分组在一个类中时,课后方法才有效


我相信NUnit已经实现了,这是我想要得到的,jUnit中是否有对应的版本

您是否考虑过改用TestNG?您可以使用@BeforeTest/@AfterTest或@BeforeSuite/@AfterSuite在一组测试或一组测试之前/之后运行浏览器打开/关闭方法。(http://testng.org/doc/documentation-main.html)

....


就我个人而言,我使用@BeforeMethod/@AfterMethod加载并关闭浏览器,因此在每次新测试之前,我都会得到一个干净的浏览器实例。当然,这样做需要更长的时间,但这只是我根据正在运行的测试/软件类型做出的选择。这还允许我在并行线程中运行测试,如果我要使用@BeforeClass/@Afterclass,就不必担心测试类中的测试分组。

如果您想在这种情况下使用JUnit,您可以做的是提供所使用的测试运行程序的替代或修改版本。只需在测试用例中设置一个调试标志,并调试之后发生的事情。您迟早会在正确的位置找到测试运行程序实现

现在是你的时间了。只需将该类复制到您的src文件夹中(您可以使用额外的src文件夹或src/test/java内部,以避免弄乱您的代码库)。现在,以您喜欢的任何方式更改类(必须在原始包中并使用原始类名)

有趣的是,类路径是由eclipse/和其他人构建的,您的类首先由引导加载程序加载。这样,在原始junit版本有机会被加载之前,您提供的版本就被首先获取了

现在,您可以调用类似于测试运行程序扩展(或您想调用它的任何东西)的东西,并且可以完全控制一切,因为您与原始类位于同一个包中

就我自己而言,我只是对其进行了扩展,以便按照类文件中声明的方式对方法进行排序(使用asm读取类文件以获得正确的方法顺序)

此外,我还添加了行为来扫描软件包和子软件包以进行额外的测试,这样我就不必使用suite,甚至不必给它一些类来构建。子套件现在通过发现其他测试用例来动态构建。我的套房也是如此。有时,我需要在一个特定的子包中进行所有测试,所以我加入了一个用suite注释的类


这就是跑步者通过组曲所做的所有其他工作。人们甚至可以在游戏中添加注释。因此,我将测试注释为@Fast,并在我的测试运行程序中只运行Fast测试,因为套件也注释为@Fast。你明白了

我想我会尝试一下,到目前为止,这是唯一的解决方案。谢谢你的帮助。