TestSuite处理测试用例有6个规约(否则会被拒绝执行测试)
A 测试用例必须是公有类(Public)
B 测试用例必须继承与TestCase类
C 测试用例的测试方法必须是公有的( Public )
D 测试用例的测试方法必须被声明为Void
E 测试用例中测试方法的前置名词必须是test
F 测试用例中测试方法误任何传递参数
执行TestNg有几种方式:命令行、Eclipse/IntelliJ、ant等.
第一种: 直接执行,右键要执行的方法,点Run As ->TestNG Test
第二种: 通过testng.xml文件来执行. 把要执行的case, 放入testng.xml文件中。 右键点击testng.xml, 点Run As->TestNG Suite testng.xml内容:
编译MessageUtil的测试用例类使用javac。
C:\TestNG_WORKSPACE>javac MessageUtil.java IgnoreTest.java
现在,运行testng.xml,将无法运行testPrintMessage()定义的测试用例在测试案例类。
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
TestNG忽略测试
如果测试用例写入到测试方法/代码将无法运行,在这种情况下,@Test(enabled = false)有助于禁用此测试案例。
测试方法是标注了@Test(enabled = false),那么并不是已经准备好测试的测试用例是绕过。
TestNG依赖测试
有时候,你可能需要在一个特定的顺序调用方法在测试案例,或你想分享一些数据和方法之间的状态。TestNG支持这种依赖测试方法之间的显式依赖它支持声明。
TestNG允许指定依赖,无论与否:
使用属性dependsOnMethods在 @Test 注释OR
使用属性dependsOnGroups在@Test注解。
下面的例子是偶数EvenNumber的检查,方法如下
public class EvenNumberChecker { public Boolean validate(final Integer primeNumber) { if (primeNumber % 2 == 0) { return false; } else return true; } }
public class Test20181123 { private EvenNumberChecker evenNumberChecker; @BeforeMethod public void initialize() { evenNumberChecker = new EvenNumberChecker(); } @DataProvider(name = "test1") public static Object[][] primeNumbers() { return new Object[][] { { 2, true }, { 3, true },{ 4, false } }; } // This test will run 4 times since we have 5 parameters defined @Test(dataProvider = "test1") public void testPrimeNumberChecker(Integer inputNumber,Boolean expectedResult) { System.out.println(inputNumber + " " + expectedResult); Boolean result =evenNumberChecker.validate(inputNumber); Assert.assertEquals(expectedResult,result); } }
TestNG参数化测试
场景:业务逻辑需要一个巨大的不同数量的测试。参数测试,允许开发人员运行同样的测试,一遍又一遍使用不同的值。
TestNG让你直接传递参数测试方法两种不同的方式:
使用testng.xml
数据提供程序
传递参数使用testng.xml
有了这种技术,在testng.xml文件中定义的简单参数,然后在源文件中引用这些参数。让我们看看下面的例子中如何使用这种技术来传递参数。
原文地址:https://www.cnblogs.com/qianjinyan/p/10019364.html