(十三)TestNG学習の道—方法遮断器
3756 ワード
目次
(一)TestNG学習の道-HelloWorld入門(二)TestNG学習の道-注釈と属性の概要(三)TestNG学習の道-TestNG.xml/YAML(四)TestNG学習の道-注釈詳細の@Test(五)TestNG学習の道-注釈詳細のパラメータ化(六)TestNG学習の道-注釈詳細の@Factory(七)TestNG学習の道-注釈詳細の無視テスト(八)TestNG学習の道-注釈詳細の同時(九)TestNG学習の道-失敗テスト再走(十)TestNG学習の道-符号化実行TestNG(十一)TestNG学習の道-BeanShell高級用法(十二)TestNG学習の道-注釈変換器(十三)TestNG学習の道-方法遮断器(十四)TestNG学習の道-TestNGリスナー(十五)TestNG学習の道-注入(十六)TestNG学習に依存する道-テスト報告(十七)TestNG+Rest Assured+Allureに基づくインタフェース自動化テストフレームワーク
前言
TestNGが起動すると、すべてのテスト方法が2つに分類されます.
TestNGは、ユーザが第2のクラスのテストメソッドに対してより大きな制御権を持つように、IMethodInterceptorインタフェースを提供し、このインタフェースを実現することによってテストメソッドの実行順序を制御することができる.
public interface IMethodInterceptor {
List intercept(List methods, ITestContext context);
}
interceptメソッドは、すべてのテストメソッドが分類された後、およびすべてのテストメソッドが実行される前に呼び出される.すべてのテストメソッドはintercept戻り値リストの順序で実行されます.したがって、ユーザはinterceptメソッドでリストを変更することができ、例えば、再ソート、さらにはテストメソッドを増加または減少させることができる.また、メソッドに渡されるITestContextパラメータは、ユーザーが特定の値(IAttributes.setAttribute(String,Object))をカスタマイズし、テストレポートに表示することができます.
例
IMethodInterceptorインプリメンテーションクラスを作成し、grp 1グループのテスト例を実行します.
import com.Test;
import org.testng.IMethodInstance;
import org.testng.IMethodInterceptor;
import org.testng.ITestContext;
import org.testng.ITestNGMethod;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class MethodInterceptors implements IMethodInterceptor {
public List intercept(List methodInstances, ITestContext context) {
List result = new ArrayList();
for (IMethodInstance methodInstance : methodInstances) {
ITestNGMethod method = methodInstance.getMethod();
Set groups = new HashSet();
if (method.isTest()) { // @Test
for (String group : method.getGroups()) {
groups.add(group); // @Test
}
}
if (groups.contains("grp1")) // grp1
result.add(methodInstance);
}
return result;
}
}
テストクラスを作成し、Listener注記@Listeners(MethodInterceptors.class):
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
@Listeners(MethodInterceptors.class)
public class MethodInterceptorsTest {
@BeforeClass
public void bfClass(){
System.out.println("BeforeClass");
}
@Test(groups = "grp1")
public void test1(){
System.out.println("test1");
}
@Test(groups = "grp2")
public void test2(){
System.out.println("test2");
}
@Test(groups = "grp2")
public void test3(){
System.out.println("test3");
}
@AfterClass
public void afClass(){
System.out.println("AfterClass");
}
}
実行結果は次のとおりです.
BeforeClass
test1
AfterClass
===============================================
Default Suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================
以上のように、MethodInterceptorsリスナーが機能しています.
学習資料の拡張
IMethodInterceptorリスナー入門レベル教育(IMethodInterceptorリスナーによる指定されたグループの実行)実戦TestNGリスナーIMethodInterceptor javadoc