TestNG тестирует несколько ID (как массив) в одной аннотации Java

У меня есть интерфейс TestInfo для аннотирования тестов TestNG, как показано ниже:

public @interface TestInfo {

    /**
     * Test case ID
     */
    public String[] id();

    boolean deploy() default true;

}

В приведенном выше случае id () является массивом строкового типа (String []). Теперь мои тесты testng выглядят так, например:

@TestInfo(id={"C9114", "C9115"})
@Test 
public class testTrial() {
...something
}

Как прочитать этот массив аннотаций и обработать каждый из них idsв цикле for. Например, я мог бы подумать о подходе, как 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);

            }
}

Поскольку я пытаюсь сохранить идентификатор и результат этого идентификатора, связанного с тестом…Хотелось бы знать, как правильно это делать?

1 ответ

  1. Если я правильно вас понял, вопрос стоит о структуре данных, не так ли?

    В этом случае вы можете использовать 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);