我想有一个自定义的JUnit批注,并且如果该批注出现在测试方法上,它应该使该对象的List
可用于该测试方法,主要是通过作为Method参数。
Company
是包含List<Employee>
的外部类对象,并且测试需要具有灵活性以具有默认的员工列表或提供自定义列表。
对于我的测试方法,我正在相应的测试中处理注释,但是如何为所有测试文件运行该注释(类似于@BeforeMethod
),并且如果方法中存在我的自定义注释,则将其注入List<Employee>
@Test
@CompanyAnnotation(salary = 5)
@CompanyAnnotation(salary = 50)
public void testCompany(// Want to inject as method parameter of List<Employee> list) {
for(Method method : CompanyTest.class.getDeclaredMethods()) {
CompanyAnnotation[] annotations = method.getAnnotationsByType(
CompanyAnnotation.class);
for(CompanyAnnotation d : annotations) {
System.out.println(b);
}
}
}
===
class Company {
// many other properties
List<Employee> employeeList;
}
class Employee {
// more properties
Integer age;
}
class CompanyBuilder {
int defaultEmployeeSize = 10;
public Company create(List<Employee> incoming) {
List<Employee> employees = new ArrayList<>();
employees.addAll(incoming);
if ( employees.size() < defaultEmployeeSize ) {
for(int i = 0; i < (defaultEmployeeSize - employees.size()); i++) {
employee.add(new Employee());
}
}
return employees;
}
}
您可以拥有一个BaseUnitTest类,该类将具有@Before方法,即注释解析。这样,它将适用于所有现有的单元测试。请注意,这会降低总执行时间。
如何获得执行中的测试方法-Get name of currently executing test in JUnit 4