Мне нравится тестировать похожие типы классов с одним и тем же кодом, поэтому я не забываю делать что-то, поэтому, используя JUnit4 (технически Junit3), я создал классы следующим образом:
@RunWith(AllTests.class)
public class MyPojoTest {
public static TestSuite suite() {
return PojoTestSuite.forPojoClass(MyPojo.class)
// test Serializable is implemented correctly
.serializable()
// test Comparable is implemented correctly
.comparable()
// etc.
.cloneable()
// creates a junit.framework.TestSuite
.create();
}
}
public class PojoTestSuite {
public static PojoTestSuite forPojoClass(Class<?> pojoClass) {
return new PojoTestSuite(pojoClass);
}
public TestSuite create() {
final TestSuite suite = new TestSuite();
suite.addTest(new EqualsTest());
suite.addTest(new HashCodeTest());
if (this.serializable) {
suite.addTest(new SerializeableTest());
}
if (this.cloneable) {
suite.addTest(new CloneableTest());
}
if (this.comparable) {
suite.addTest(new ComparableTest());
}
return suite;
}
// getters and setters, constructor, ...
}
Однако я не был Не могу реализовать что-то подобное в чистом JUnit4, и теперь в JUnit5 я тоже не могу найти ничего подобного.
Есть ли способ использовать наборы тестов для динамического создания набора тестов? Я бы хотел, чтобы тесты были как можно меньше, потому что сбой "testEqualsReturnsTrueForSameObject()
" гораздо полезнее, чем сбой "testPojo()
".