Интеграционный тест JUnit с параметризованными аннотациями - PullRequest
0 голосов
/ 16 октября 2018

В своих интеграционных тестах я использую пользовательские аннотации для запуска части своего приложения.Я определенно должен использовать эти аннотации для своих тестов.Поэтому типичный интеграционный тест выглядит следующим образом:

@Test
@MyAnnotation(a = MyEnum.B, b = someOtherConstant)
public void test() {
}

Что я хотел бы сделать, это запустить тесты для всех перечислений в MyEnum.Я думал об использовании параметризованных тестов.Но так как значение, которое я передаю в аннотации, должно быть постоянным, я думаю, что это не вариант.Какие еще варианты у меня есть?

1 Ответ

0 голосов
/ 18 октября 2018

Я не думаю, что здесь нужна аннотация.

Очень простое перечисление:

package stackoverflow52828976;

public enum MyEnum
{
   A,
   B,
   C;

   public boolean isA()
   {
      return this == A;
   }
}

Тестовый класс:

package stackoverflow52828976;

import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

@RunWith( Parameterized.class )
public class MyEnumTest
{

   @Parameterized.Parameters
   public static Collection<Object[]> data()
   {
      final List<Object[]> list = new LinkedList<>();

      list.add(new Object[]{ MyEnum.A, true});
      list.add(new Object[]{ MyEnum.B, false});
      list.add(new Object[]{ MyEnum.C, false});

      return list;
   }


   private final MyEnum e;
   private final boolean testResult;


   public MyEnumTest
         ( final MyEnum    anEnum
         , final boolean   aTestResult
         )
   {
      this.e = anEnum;
      this.testResult = aTestResult;
   }


   @Test
   public void testIsA() throws Exception
   {
      assertEquals(testResult, e.isA());
   }

}
...