Software_programming_TestNG
2019-10-04
key points:
ITestListner
TestNG ITestListener
1 package framework.testNG.Listener; 2 3 import org.testng.ITestContext; 4 import org.testng.ITestResult; 5 6 public interface ITesListener { 7 8 // 每次调用测试之前都会调用 9 void onTestStart(ITestResult var); 10 11 // 每次测试成功时调用 12 void onTestSccess(ITestResult var); 13 14 // 每次测试失败时调用 15 void onTestFailure(ITestResult var); 16 17 // 每次测试跳过时调用 18 void onTestSkipped(ITestResult var); 19 20 // 测试失败且满足 successPercentage 属性时调用 21 void onTestFailedButWithinSuccessPercentage(ITestResult var); 22 23 // 实例化测试类之后和在调用任何配置方法之前调用 24 void onStart(ITestContext var); 25 26 // 在运行所有测试并调用所有配置方法之后调用 27 void onFinish(ITestContext var); 28 29 }
ITestListener 接口继承自 ITestNGListener 接口,实际应用过程中,一般使用 TestListenerAdapter, 因为 ITestListener中的方法在 TestListenerAdapter 中给了默认实现,现在只需继承 TestListenerAdapter ,重写关注的方法即可。
以编程方式
import framework.testNG.Listener.TestListenerAdapterImpl; import org.testng.TestListenerAdapter; import org.testng.TestNG; public class programTest { public static void main(String[] args){ TestNG testNG = new TestNG(); testNG.setTestClasses(new Class[]{TestListenerWithLog.class}); TestListenerAdapter listener = new TestListenerAdapterImpl(); testNG.addListener(listener); testNG.run(); } }
实现 IHookable ,通常用在在进行testCase前,先做逻辑验证,例如权限等规则。
2019-10-04 21:11:29
实现 TestListenerAdapter, 结合 log4j2 记录日志
note: 设置的 Listener 是对所有 test 生效的, 如果需要在特定范围了特殊设置,需要code 逻辑。
note: 如果program 了 listener ,继而又在某个 Test class 上引用 @Listeners({TestListenerAdapterImpl.class}) , 则会重复输出 log
attention:
Listener 中要将 ITestResult 中调用 TestCase 名称和 TestMethod 名字传出,
在 log4j2.xml patternLayout 的 %l 会输出 Listener 自身的类名和方法。