在集成测试中,我使用自定义注释来启动应用程序的一部分。我绝对需要在测试中使用这些注释。因此,典型的集成测试如下所示:
@Test
@MyAnnotation(a = MyEnum.B, b = someOtherConstant)
public void test() {
}
我想对MyEnum中的所有枚举运行测试。我考虑过使用参数化测试。但是由于我传递给注释的值必须是常量,所以我认为这不是一个选择。我还有什么其他选择?
答案 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());
}
}