如何通过java反射为{set}方法设置变量

时间:2018-06-15 13:56:00

标签: java

我有一个定义为EmployeeBase.java的实体类,它有200个setter方法和200个为这些方法声明的私有变量。

我有一个Employee.java,它扩展了基类EmployeeBase.java,它也有很少的字段。

现在我想为Employee.java中的所有字段创建Random值并返回Employee对象。

我不确定如何设置Employee和基类中存在的setter的所有值。

请帮帮我。

感谢。

1 个答案:

答案 0 :(得分:0)

有些库的目标是减少创建Junit测试的时间和精力,例如PodamEasytest。为简单起见,我喜欢在我的测试中使用Podam。

  1. 将Podam依赖项添加到您的pom.xml

    <dependency>
        <groupId>uk.co.jemos.podam</groupId>
        <artifactId>podam</artifactId>
        <version>7.0.5.RELEASE</version>
    </dependency>
    
  2. 写你的豆子:

    2.1。的 People.java

    public abstract class Peopple {
    
        private String name;
        private String mail;
        private List<String> phones;
    
        public String getName() {return name;}
        public void setName(String name) {this.name = name;}
        public String getMail() {return mail;}
        public void setMail(String mail) {this.mail = mail;}
        public List<String> getPhones() {return phones;}
        public void setPhones(List<String> phones) {this.phones = phones;}
    

    }

    2.2。的 Course.java

    public class Course {
    
        private String code;
        private String name;
    
        public String getCode() {return code;}
        public void setCode(String code) {this.code = code;}
        public String getName() {return name;}
        public void setName(String name) {this.name = name;}
    
        @Override
        public String toString() {
            return return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);
      }
    }
    

    2.3。的 Student.java

    public class Student extends Peopple {
    
        private Course course;
    
        public Course getCourse() {return course;}
        public void setCourse(Course course) {this.course = course;}
    
        @Override
        public String toString() {
            return return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);
        }
    }
    
  3. 使用Podam填充你的bean:

    public class PodamDataGenerator {
        public static void main(String[] args) {
    
            PodamFactory podamFactory = new PodamFactoryImpl();
            //Limit number of elements to collections fields
            podamFactory.getStrategy().setDefaultNumberOfCollectionElements(2);
            Student student = podamFactory.manufacturePojo(Student.class);
            System.out.println("Podam Pojo\n-----------\n " + student);
        }
    }
    
  4. 输出

    Podam Pojo
    -----------
    Student[course=Course[code=Dr0zgS5ZKw,name=ZrGJ8xAcJQ],
            name=nB6zy558W5,mail=DuW6YyLgo3,phones=[Wlc7axk_A7, nQxDmUlukY]]
    
  5. 希望这有帮助!