我的单元测试使用枚举作为数据点(参见JUnit Theories)。
此枚举仅用于测试,因此我更喜欢将其封装并使用私有嵌套类。 JUnit要求测试方法是公开的。测试方法将private enum作为参数:
@RunWith(Theories.class)
class ExampleTest {
private enum Lists {
EMPTY,
SINGLE_ELEMENT,
OTHER_ELEMENT,
TWO_ELEMENTS;
public Object createElements() {
// Imagine createElements being abstract and
// implemented in each enum constant.
}
}
@DataPoints
public static final Lists[] ALL_LISTS = Lists.values();
private List<Object> tested;
@Theory
public void add_sizeIncreased(Lists elementsToAdd) {
int oldSize = tested.size();
int nElementsAdded = elementsToAdd.size();
tested.addAll(elementsToAdd);
assertThat(tested.size(), is(equalTo(oldSize + nElementsAdded));
}
}
这正确地导致了警告/提示:“通过公共API导出非公共类型”(至少在Netbeans中)。
解决这个问题的正确方法是什么?
答案 0 :(得分:0)
两个建议:
只需将枚举公开。因为它是在测试代码中,所以不会在jar / war中导出,所以没什么大不了的。
在您的测试方法中接受Object
而不是Lists
并投射。