使用TestNG,有没有办法在将一个类调用到另一个类时忽略@before类?

时间:2015-08-20 21:54:36

标签: java unit-testing testng

我有两个测试类,每个测试类包含许多测试。我想同时运行这两个,而不必同时运行@BeforeClass安装方法。我打电话给这样的课:

    public static void main(String[] args) {
        TestListenerAdapter tla = new TestListenerAdapter();
        TestNG testng = new TestNG();
        testng.setTestClasses(new Class[] { TestClass1.class, TestClass2.class });
        testng.addListener(tla);
        testng.run();
    }

之所以这样,是因为我让他们两个都在弹出菜单中调用,只想一次选择该选项。如果不清楚,我会尝试进一步解释。

我有5个班级的个人测试集合。我希望每个班级能够单独运行,但我也想让它们集中运行,如果我愿意的话。在@BeforeClass中,我让他们每个人都调用另一个类来选择我想要使用的URL(我正在使用TestNG进行测试并使用Selenium WebDriver)。 当这段代码运行时,它将在每个I类列表中执行@BeforeClass,如果可能的话,如果我使用上面的代码执行测试,我想在所有测试中忽略@BeforeClass。

3 个答案:

答案 0 :(得分:0)

我建议将变换器传递到实现IAnnotationTransformer2的TestNG测试用例。该转换器可以允许您在运行时控制非@Test注释的行为。

IAnnotationTransformer2

答案 1 :(得分:0)

您可以在2个测试类的公共类中使用@BeforeTest。

答案 2 :(得分:-1)

我知道你想在你的2个测试类中只运行一次@Before内的东西,这两个测试类将同时执行。

如果您使用maven + junit 4.x,则可以选择在测试套装开始和结束之前和之后进行设置。

或者您只需在套件级别创建@ClassRule,请参阅doc