自定义注释注入为JUnit中的列表

问题描述 投票:0回答:1

我想有一个自定义的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;
    }
}
java junit annotations
1个回答
0
投票

您可以拥有一个BaseUnitTest类,该类将具有@Before方法,即注释解析。这样,它将适用于所有现有的单元测试。请注意,这会降低总执行时间。

如何获得执行中的测试方法-Get name of currently executing test in JUnit 4

© www.soinside.com 2019 - 2024. All rights reserved.