TestNG在Java

时间:2016-05-03 00:06:40

标签: java testing annotations automated-tests testng

我有一个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和结果时...我想知道这样做的正确方法是什么?

1 个答案:

答案 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);