我正在试图弄清楚如何测试我正在研究的小型库。以此简化方法为例:
private int countMappableFields(Class<?> type) {
int mappableFields = 0;
Field[] fields = type.getFields();
for (int i = 0; i < fields.length ; i++) {
if (FieldHelper.isMappable(fields[i]))
mappableFields++;
}
return mappableFields;
}
我应该在单独的文件中定义几个类并在我的所有测试中引用它们吗?是否有不同的方法可以为每个案例构建一个对象?
答案 0 :(得分:1)
您可以在测试类中内联定义类;没有理由为他们制作单独的文件。
public class TestCase {
private static class NoFieldClass
{
}
// And so on.
@Test
public void shouldFindZeroMappableFieldsInNoFieldClass() {
assertTrue(0 == countMappableFields(NoFieldClass.class));
}
}
这可以使您的测试源代码区域保持干净。它将创建多个类文件,但至少您定义的内联类看起来像“TestCase $ NoFieldClass.class”而不是顶级“NoFieldClass.class”。
答案 1 :(得分:0)
我通常只是在测试类中为这类事做一个private static class
。如果你有多个测试文件需要做同样的事情,你可能想要创建顶级类。
答案 2 :(得分:0)
取决于您正在测试的内容。如果您正在进行某种自定义反射(例如,FieldHelper仅因某种原因返回了字段的子集),您可能希望实际测试您将要使用它的对象) - 即实际运行您的反射测试一个map<CLass,Integer>
,其中类映射到期望值。