具有参数化批注的JUnit集成测试

时间:2018-10-16 06:14:33

标签: java testing junit annotations integration-testing

在集成测试中,我使用自定义注释来启动应用程序的一部分。我绝对需要在测试中使用这些注释。因此,典型的集成测试如下所示:

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

我想对MyEnum中的所有枚举运行测试。我考虑过使用参数化测试。但是由于我传递给注释的值必须是常量,所以我认为这不是一个选择。我还有什么其他选择?

1 个答案:

答案 0 :(得分:0)

我认为这里不需要注释。

一个非常简单的枚举:

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());
   }

}