테스트 메소드에 주석 테스트 데이터 유형이있는 testNG에서 일부 테스트를 실행하고 있습니다. 일반적인 메소드를 사용하여 읽고 있습니다. 테스트 메소드의 주석 값을 기반으로 테스트 데이터. 여기서 문제는 테스트 데이터를 읽을 다른 클래스의 여러/여러 테스트 메소드가 있으므로 주석을 읽는 클래스 또는 메소드 이름을 지정할 수 없다는 것입니다. 그래서 어떤 테스트 메소드가 테스트 데이터를 찾고 있는지에 따라이 공통 메소드에서 주석을 동적으로 읽을 수있는 방법을 찾고 있습니다.주석 값을 얻기 위해 클래스/메소드 이름을 하드 코딩하지 않고 주석 값을 동적으로 가져옵니다.
더 명확하게 보려면 아래 코드 스 니펫을 참조하십시오.
public class MyClass1 {
@Test
@testDataParam(testDataType="excel")
public void test1() {
DataTable dataTable = new DataTable();
dataTable.getValue();
//Some test that reads from specified test data type
}
}
public class MyClass2 {
@Test
@testDataParam(testDataType="json")
public void test2() {
DataTable dataTable = new DataTable();
dataTable.getValue();
//Some test that reads from specified test data type
}
}
public class GetTestData {
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface testDataParam {
String testDataType();
}
}
public class DataTable {
public void setDataTable() {
// get annotation from test methods, test methods will be different for
// different test, so i can not mention specific class or method here to read
// annotation.
// if test data type is excel, read data from excel
// if test data type is json, read data from json
}
public String getValue() {
// return value from specified data type excel/json
return "";
}
}