我正在编写一个库来为我的 JPA@Entity
类自动生成单元测试。简而言之:用户提供字段-> 值对的多重映射,我的库为它们生成测试。
示例测试数据:
lastName -> some name, some other name
firstName -> some first name, some other first name
假设我有一个包含测试的类:
public class PersonTest
{
@Test
public void personNotValidNullLastname() {
// ...
}
@Test
public void personNotValidTooLongLastname() {
// ...
}
@Test
public void personNotValidDateofbirth() {
// ...
}
@Test
public void personValidAddressType() {
// ...
}
// ...
}
如果我执行这些测试,我会从 TestNG 控制台获得一些不错的输出:
PASSED: personNotValidDateofbirth
PASSED: personNotValidNullLastname
PASSED: personNotValidTooLongLastname
PASSED: personValidAddressType
现在我想即时创建一些测试。如果我将@Factory
注释与这样的方法一起使用:
@Factory
public Object[] generateTests() {
// ...
}
这个工厂创建了我的自定义类的实例:
public class EntityFieldTest
{
// ...
@Test
public void doTest()
{
testMethod.run(VALIDATOR, entityClass, field, value);
}
}
// Note that testMethod is an anonymous function parametrized elsewhere
它将运行我生成的所有测试,但输出并没有说太多:
PASSED: doTest
PASSED: doTest
PASSED: doTest
PASSED: doTest
如何执行我的测试方法以实现更详细的结果,例如PersonTest
?