【问题标题】:testng "groups" testing failstestng“组”测试失败
【发布时间】:2014-05-09 14:40:18
【问题描述】:

我有一个 Calc 类,它实现了两个方法 add(int a, int b) 和 div(int a, int b) 以及这个类的一个测试类:

import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;


public class CalcTest {
Calc c;

@BeforeClass
public void init() {
    c = new Calc();
}

@Test(groups = "t1")
public void addTest() {
    System.out.println("Testing add() method");
    Assert.assertEquals(c.add(10, 5), 15);
}

@Test
public void divTest() {
    System.out.println("Testing div() method");
    Assert.assertEquals(c.div(10, 5), 2, 0);
}

@AfterClass
public void free() {
    c = null;
}

}

我有一个 testing.xml 文件来测试套件:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="first tests">
    <test name="first test">
        <groups>
            <run>
                <include name="t1" />
            </run>
        </groups>
        <classes>
            <class name="CalcTest" />
        </classes>
    </test>
</suite>

我刚看了一下 testng 中的组,所以我想尝试一下,但是如果我运行 testing.xml 文件,我会在行得到 nullPointerException:

Assert.assertEquals(c.add(10, 5), 15);

-如果我从测试方法中删除“组”注释,它可以正常工作,谢谢

【问题讨论】:

  • 如果你把@BeforeGroups注解也放在init()前面会怎样?
  • 没什么,都是一样的..

标签: java maven-3 testng


【解决方案1】:

您需要将 @BeforeClass 注释保留在组中。将 (groups = "t1") 添加到您的课前注释中。

【讨论】:

    【解决方案2】:

    漂亮的解决方案,因为将来可能会有更多的组,将是:

    @BeforeClass(alwaysRun = true)
    public void init() {
        c = new Calc();
    }
    

    这会导致您的 BeforeClass 始终运行,无论您运行的是哪个组。

    【讨论】:

      猜你喜欢
      • 2011-08-04
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多