我有一个TestInfo接口,用于注释TestNG测试,如下所示:
public @interface TestInfo {
/**
* Test case ID
*/
public String[] id();
boolean deploy() default true;
}
在上面的例子中,id()是一个String类型的数组(String [])。现在我的testng测试看起来像这样:
@TestInfo(id={"C9114", "C9115"})
@Test
public class testTrial() {
...something
}
如何阅读此注释数组并在for循环中处理每个ids
。例如,我可以考虑类似get the test method
然后注释的方法并检查每个id,如下所示...
Map<Object, Object> map = new HashMap<Object, Object>();
Method method = result.getMethod().getConstructorOrMethod().getMethod();
TestInfo annotation = method.getAnnotation(TestInfo.class);
int status = 0;
try {
if (annotation!=null) {
for(;;/*each id*/){
map.put("id",annotation.id().substring(1));
switch (status) {
case ITestResult.SUCCESS:
map.put("result", STATUS.PASSED.getValue());
case ITestResult.FAILURE:
map.put("result", STATUS.AUTO_FAIL.getValue());
case ITestResult.SKIP:
map.put("result", STATUS.AUTO_SKIPPED.getValue());
default:
map.put("result", STATUS.UNTESTED.getValue());
}
ApiIntegration.addTestResult(map);
}
}
当我试图存储与测试相关的id的id和结果时...我想知道这样做的正确方法是什么?
答案 0 :(得分:0)
如果我理解你的问题是数据结构,那不是吗?
在这种情况下,您可以使用Guava com.google.common.collect.ListMultimap
ListMultimap<String, String> map = ArrayListMultimap.create();
for (String id : annotation.ids()) {
map.put(ITestResult.SUCCESS, id);
}
// getting all passed
List<String> passedTestIds = map.get(ITestResult.SUCCESS);