当前位置: 首页 > 知识库问答 >
问题:

TestNG:运行逐测试、逐方法或类是否应该调用@BeForeSuite方法?

蒋俊人
2023-03-14

我有一个测试套件,它有一个用@beforeSuite注释的设置方法,该方法在该套件之前运行。偶尔,我需要单独运行测试或在一个类中运行所有测试。是否有一种方法让我的设置方法运行之前,这些太。

我的理解是,TestNG创建了一个默认套件,所以如何运行测试并不重要,如果我有一个用@BeForeSuite注释的方法,它应该在所有测试之前运行。然而,这对我不起作用。只有当我运行整个套房时它才运行。

xml套件。如果我从这里运行一个测试,它是有效的。(右击,选择运行)

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="OvernightSuite">
<test name="Test Sequential" preserve-order="true" parallel="none">
    <classes>
        <class name="com.myComp.test.cases.setUpClass" />
        <class name="com.com.myComp.test.cases.testClass1" />
        <class name="com.com.myComp.test.cases.testClass2" />
    </classes>
</test>
</suite>
public class setUpClass{
@BeforeSuite
public void setUp() {
    populateDataSources();
    populateVariables();
}
    @Test
    public void datasourcesWereSetUpTest() {
        boolean result = method.read();
        assert(result);
    }
}

其中一个测试类。如果我在这里运行,(突出显示,右键单击,选择run)不会执行beforeSuite。

public class testClass1{
    @Test
    public void someTest() {
        boolean result = method.read();
        assert(result);
    }
}

共有1个答案

慕容俭
2023-03-14

只要@beforeSuite注释方法是测试类的一部分(其中有一个或多个@test方法的方法),它就可以工作,而不必做任何额外的事情。

但是,如果@beforeSuite方法位于不同的类中,则执行该方法的唯一方法是执行以下操作之一:

  • 创建一个套件xml文件,其中包括包含@beforeSuite方法的类以及测试类。(或)
  • 创建一个实现接口org.TestNG.isuitelistener的TestNG侦听器,并将@beforeSuite的逻辑移动到onstart()中,然后通过@listeners注释(or) 标记(or)通过服务加载器方法连接到该侦听器中。要了解更多信息,可以阅读我的这篇博客文章。
 类似资料:
  • 我有一个关于testNG的问题。我有五类测试(a类、b类、c类、d类、e类),并且在每个类中都有3个测试(test1 test2 test3)问题是我在所有测试中都有@Test(组={"吸烟测试"},启用=真,优先级=1)-类a-类a-类a <代码>@测试(组={"吸烟测试"},启用=真,优先级=1) -类b<代码>@测试(组={"吸烟测试"},启用=真,优先级=2) -类b<代码>@测试(组={

  • 这是驱动程序类,它将为每个测试方法创建驱动程序实例。

  • 如何使用Google Chromes开发人员工具逐行浏览javascript代码,而不让代码进入javascript库? 例如,我在站点上大量使用jQuery,我只想调试我编写的jQuery,而不是jQuery库中的JavaScript/jQuery。我如何只在自己的jquery/JavaScript中单步执行,而不必在jquery库中的数百万行中单步执行?

  • 所以我肯定有类似的东西在那里,但我已经搜索了一个小时,还没有找到确切的我要找的东西。假设我有一个这样的类: 我该如何制作这样的作品?

  • 问题内容: 我只是将eclipse放在笔记本电脑上,当我使用Step Into调试工具时,它不仅使我进入了代码的下一部分。一个例子是,如果我调用数组列表,它将带我进入数组列表类,并通过所有必需的代码进入 但是,在我的桌面上,它只会带我进入下一段代码。我做: 如果我单击该按钮(从我的桌面进入),则 hello world 将出现在控制台中。 相比之下,如果我在笔记本电脑上“步入” ,它将首先拉起Pr

  • 我从以下链接实现了re运行失败的TestNG测试类的逻辑: 不幸的是,它使用“test”注释运行该方法,而不运行BeforeClass(@BeforeClass)和AfterClass(@AfterClass)方法。我试图研究ITestAnnotations的setDependsOnMethods和getDependsOnMethods方法,但没有成功。 有人知道如何让侦听器类同时运行Before