【发布时间】:2013-04-03 05:23:46
【问题描述】:
我知道通过创建测试套件我可以运行我所有的类文件,使用类似的代码
suite.addTestSuite( TestCase3.class);
suite.addTestSuite( TestCase2.class);
suite.addTestSuite( TestCase1.class);
但是如果我不想运行类文件中的所有方法怎么办?我只想在测试类中运行特定的测试方法,该怎么做?
【问题讨论】:
我知道通过创建测试套件我可以运行我所有的类文件,使用类似的代码
suite.addTestSuite( TestCase3.class);
suite.addTestSuite( TestCase2.class);
suite.addTestSuite( TestCase1.class);
但是如果我不想运行类文件中的所有方法怎么办?我只想在测试类中运行特定的测试方法,该怎么做?
【问题讨论】:
如果你想修改跨类的执行,我强烈推荐TestNG!
它有很好的文档记录,并为自定义测试执行提供了大量有用且易于使用的功能。
根据您的要求,TestNG Groups 将完成这项工作。
import org.testng.annotations.Test;
@Test(groups = {"groupA"})
public class ATest{
@Test(groups = {"group1"})
public void testA1() {
}
@Test(groups = {"group2"})
public void testA2() {
}
}
&
import org.testng.annotations.Test;
@Test(groups = {"groupB"})
public class BTest{
@Test(groups = {"group1"})
public void testB1() {
}
@Test(groups = {"group2"})
public void testB2() {
}
}
我猜你已经知道如果你启动“group1”方法会运行哪些方法吧?
【讨论】:
您将需要进一步构建您的套件。 类似:
XmlSuite suite = new XmlSuite();
XmlTest test = new XmlTest(suite);
test.setName("TmpTest1");
test.setVerbose(3);
List<XmlClass> classes = new ArrayList<XmlClass>();
XmlClass cl = new XmlClass();
cl.setName("my.pkg.Tests");
XmlInclude incMet = new XmlInclude("testSimpleTrue");
List<XmlInclude> incMetList = new ArrayList<XmlInclude>();
incMetList.add(incMet);
cl.setIncludedMethods(incMetList);
classes.add(cl);
test.setXmlClasses(classes);
List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
testng.setXmlSuites(suites);
【讨论】: