繁体   English   中英

测试域模型Junit Java

[英]Test Domain Model Junit Java

我在这里面临客户类别的测试覆盖问题,该类别与我在下面引用的其他2个域类有联系,第一个是InsuranceClaim域类,第二个是汽车域类。真正的问题是测试覆盖率清单:

关于如何测试hasCode并等于代码的更多信息? 任何建议或纠正将是有益的,并赞赏!

谢谢吉姆

public List<Car> getCars() {
    return cars;
}

public void setCars(List<Car> cars) {
    this.cars = cars;
}

public List<InsuranceClaim> getInsuranceClaims() {
    return insuranceClaims;
}

public void setInsuranceClaims(List<InsuranceClaim> insuranceClaims) {
    this.insuranceClaims = insuranceClaims;
} 

这是客户域类:

package models;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import models.persistence.JPAUtil;
//import play.db.jpa.JPA;
//import play.db.jpa.Transactional;
import play.db.jpa.Transactional;


@Entity
@Table(name = "customers")
public class Customer {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @Column(name = "firstName", length = 512, nullable = false)
    private String firstName;

    @Column(name = "lastName", length = 512, nullable = false)
    private String lastName;

    @Column(name = "birthDate", nullable = false)
    private Date birthDate;

    @Column(name = "scale", nullable = false)
    private int scale;

    @Embedded
    private Address address;

    @Column(name = "afm",  length = 9, nullable = false)
    private String afm;

    @Column(name = "phonenumber",  length = 10, nullable = false)
    private String phonenumber;

    @OneToMany(orphanRemoval=true, 
            cascade = CascadeType.ALL, 
            mappedBy="customer", fetch=FetchType.LAZY)    
    private List<Car> cars = new ArrayList<Car>();

    @OneToMany(orphanRemoval=true, 
            cascade = CascadeType.ALL, 
            mappedBy="customer", fetch=FetchType.LAZY)    
    private List<InsuranceClaim> insuranceClaims = new ArrayList<InsuranceClaim>();


    public Customer() {
    }

    public Customer(String firstName, String lastName, Date birthDate, int scale, Address address, String afm, String phonenumber/*, List<Car> cars*/) {
        super();
        this.firstName = firstName;
        this.lastName = lastName;
        this.birthDate = birthDate;
        this.scale = scale;
        this.address = address;
        this.afm = afm;
        this.phonenumber = phonenumber;
        //this.cars = cars;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public Date getBirthDate() {
        return birthDate;
    }

    public void setBirthDate(Date birthDate) {
        this.birthDate = birthDate;
    }

    public int getScale() {
        return scale;
    }

    public void setScale(int scale) {
        this.scale = scale;
    }


    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    public void setAfm(String afm) {
        this.afm = afm;
    }

    public String getAfm() {
        return afm;
    }

    public String getPhonenumber() {
        return phonenumber;
    }

    public void setPhonenumber(String phonenumber) {
        this.phonenumber = phonenumber;
    }



    @Override
    public String toString() {
        return "Customer [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", birthDate=" + birthDate
                + ", scale=" + scale + ", address=" + address + ", afm=" + afm + ", phonenumber=" + phonenumber + "]";
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((address == null) ? 0 : address.hashCode());
        result = prime * result + ((afm == null) ? 0 : afm.hashCode());
        result = prime * result + ((birthDate == null) ? 0 : birthDate.hashCode());
        result = prime * result + ((firstName == null) ? 0 : firstName.hashCode());
        result = prime * result + id;
        result = prime * result + ((lastName == null) ? 0 : lastName.hashCode());
        result = prime * result + ((phonenumber == null) ? 0 : phonenumber.hashCode());
        result = prime * result + scale;
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Customer other = (Customer) obj;
        if (address == null) {
            if (other.address != null)
                return false;
        } else if (!address.equals(other.address))
            return false;
        if (afm == null) {
            if (other.afm != null)
                return false;
        } else if (!afm.equals(other.afm))
            return false;
        if (birthDate == null) {
            if (other.birthDate != null)
                return false;
        } else if (!birthDate.equals(other.birthDate))
            return false;
        if (firstName == null) {
            if (other.firstName != null)
                return false;
        } else if (!firstName.equals(other.firstName))
            return false;
        if (id != other.id)
            return false;
        if (lastName == null) {
            if (other.lastName != null)
                return false;
        } else if (!lastName.equals(other.lastName))
            return false;
        if (phonenumber == null) {
            if (other.phonenumber != null)
                return false;
        } else if (!phonenumber.equals(other.phonenumber))
            return false;
        if (scale != other.scale)
            return false;
        return true;
    }



    public List<Car> getCars() {
        return cars;
    }

    public void setCars(List<Car> cars) {
        this.cars = cars;
    }

    public List<InsuranceClaim> getInsuranceClaims() {
        return insuranceClaims;
    }

    public void setInsuranceClaims(List<InsuranceClaim> insuranceClaims) {
        this.insuranceClaims = insuranceClaims;
    }

    public void saveNewCustomer() {
        EntityManager em = JPAUtil.getCurrentEntityManager();
            EntityTransaction et = em.getTransaction();
            et.begin();
            em.persist(this);
            et.commit();
            em.close();
        }

}

这是我引用的另一个域类:

package models;

import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import models.persistence.JPAUtil;


@Entity
@Table(name = "insuranceClaims")
public class InsuranceClaim {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @Column(name = "approval")
    private Boolean approval;

    @Column(name = "date")
    private Date date;

    @Column(name = "damage")
    private String damage;

    @Column(name = "amount")
    private Double amount;

    @ManyToOne(fetch=FetchType.LAZY, 
            cascade = { CascadeType.PERSIST, CascadeType.MERGE })
    @JoinColumn(name="customerid")
    private Customer customer;

    @ManyToOne(fetch=FetchType.LAZY, 
            cascade = { CascadeType.PERSIST, CascadeType.MERGE })
    @JoinColumn(name="contractid")
    private Contract contract;


    public InsuranceClaim() {
    }


    public InsuranceClaim(InsuranceClaim insuranceClaim) {
        this.approval = insuranceClaim.getApproval();
        this.date = insuranceClaim.getDate();
    }


    public InsuranceClaim(Boolean approval, Date date, String damage, Double amount) {
        super();
        this.approval = approval;
        this.date = date;
        this.damage = damage;
        this.amount = amount;
    }


    public int getId() {
        return id;
    }



    public Double getAmount() {
        return amount;
    }


    public void setAmount(Double amount) {
        this.amount = amount;
    }


    public void setId(int id) {
        this.id = id;
    }



    public Boolean getApproval() {
        return approval;
    }


    public void setApproval(Boolean approval) {
        this.approval = approval;
    }


    public Date getDate() {
        return date;
    }


    public void setDate(Date date) {
        this.date = date;
    }

    public String getDamage() {
        return damage;
    }


    public void setDamage(String damage) {
        this.damage = damage;
    }

    protected void setCustomer(Customer customer) {
        if (this.customer != null) {
            this.customer.getInsuranceClaims().remove(this);
        }
        this.customer = customer;
        if (customer != null) {
            this.customer.getInsuranceClaims().add(this);
        }
    }

    public Customer getCustomer() {
        return customer;
    }


    protected void setContract(Contract contract) {
        this.contract = contract;
    }

    public Contract getContract() {
        return contract;
    }


    public void saveNewInsuranceClaim() {
        EntityManager em = JPAUtil.getCurrentEntityManager();
            EntityTransaction et = em.getTransaction();
            et.begin();
            em.persist(this);
            //et.commit();
            em.close();
        }   
}

这是第三个域类:

package models;

import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
//import javax.persistence.OneToOne;
import javax.persistence.Table;

import models.persistence.JPAUtil;


@Entity
@Table(name = "cars")
public class Car {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @Column(name = "model")
    private String model;

    @Column(name = "color")
    private String color;

    @Column(name = "licenseDateIssued")
    private Date licenseDateIssued;

    @Column(name = "plate")
    private String plate;

    //EXEI PROVLHMA
    //@OneToOne
    //@JoinColumn(name="contractid")
    @OneToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="contractid")
    private Contract contract;

    @ManyToOne(fetch=FetchType.LAZY, 
            cascade = { CascadeType.PERSIST, CascadeType.MERGE })
    @JoinColumn(name="customerid")
    private Customer customer;

    public Car() {
    }



    public int getId() {
        return id;
    }



    public void setId(int id) {
        this.id = id;
    }



    public String getModel() {
        return model;
    }



    public void setModel(String model) {
        this.model = model;
    }



    public String getColor() {
        return color;
    }



    public void setColor(String color) {
        this.color = color;
    }



    public Date getLicenseDateIssued() {
        return licenseDateIssued;
    }



    public void setLicenseDateIssued(Date licenseDateIssued) {
        this.licenseDateIssued = licenseDateIssued;
    }



    public String getPlate() {
        return plate;
    }



    public void setPlate(String plate) {
        this.plate = plate;
    }



    public Contract getContract() {
        return contract;
    }



    public void setContract(Contract contract) {
        this.contract = contract;
    }



    public Customer getCustomer() {
        return customer;
    }



    public void setCustomer(Customer customer) {
        this.customer = customer;
    }



    public Car(Car car) {
        this.model = car.getModel();
        this.color = car.getColor();
        this.licenseDateIssued = car.getLicenseDateIssued();
        this.plate = car.getPlate();
    }

    public Car(String model, String color, Date licenseDateIssued, String plate) {
        super();
        this.model = model;
        this.color = color;
        this.licenseDateIssued = licenseDateIssued;
        this.plate = plate;
    }


    public void saveNewCar() {
        EntityManager em = JPAUtil.getCurrentEntityManager();
            EntityTransaction et = em.getTransaction();
            et.begin();
            em.persist(this);
            et.commit();
            em.close();
        }

}

这是Test for Customer域类:

package models;


import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
import java.util.Date;
import java.util.List;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

import models.Customer;
import models.InsuranceClaim;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;


public class CustomerTest {


    Customer customer;
    InsuranceClaim insuranceClaim;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @Column(name = "firstName", length = 512, nullable = false)
    private String firstName;

    @Column(name = "lastName", length = 512, nullable = false)
    private String lastName;

    @Column(name = "birthDate", nullable = false)
    private Date birthDate;

    @Column(name = "scale", nullable = false)
    private int scale;

    @Embedded
    private Address address;

    @Column(name = "afm",  length = 10, nullable = false)
    private String afm;

    @Column(name = "phonenumber",  length = 10, nullable = false)
    private String phonenumber;

    @Before
    public void setUp() {
        customer = new Customer("SomeName", "LastName", new Date(1997-4-26), 0, new Address("SomeStreet", "Number", "Location", "PostalCode", "Country"), "someString", "someString");
        insuranceClaim = new InsuranceClaim(true,new Date(2016-03-04),"Damage Inc",400.00);
        //insuranceClaim.setDamage("Damage Inc");
        //insuranceClaim.setDate(new Date(2016-03-04));
        //insuranceClaim.setContract(new Contract(0.0d, new Date(2016-07-03),new Date(2018-07-03)));
    }

    @Test
    public void succefulSetUp() {
        claimBidirectionalAssociationInvariant(customer);
        carBidirectionalAssociationInvariant(customer);
        //expectedItemsSize(customer,1);
        //Assert.assertEquals(ItemState.AVAILABLE, item.getState());
        //successfullAdditionofclaim(customer,insuranceClaim);
    }

    @Test
    public void testConstructor() {
        final Constructor<?>[] constructors = Customer.class.getDeclaredConstructors();
        for (Constructor<?> constructor : constructors) {
            Assert.assertTrue(Modifier.isPublic(constructor.getModifiers()));
        }
    }

    @Test
    public void testGetterSetterPostalCode() {
        final String postalCode = "456098";
        final Address address = new Address();
        address.setZipCode("456098");
        Assert.assertEquals(address.getZipCode(),postalCode);
    }

    @Test
    public void testGetterSetterFirstName() {
        final String customer = "Koula";
        final Customer customerName = new Customer();
        customerName.setFirstName("Koula");
        Assert.assertEquals(customerName.getFirstName(),customer);
    }

    @Test
    public void testGetterSetterLastName() {
        final String customer = "Pepona";
        final Customer customerName = new Customer();
        customerName.setLastName("Pepona");
        Assert.assertEquals(customerName.getLastName(),customer);
    }

    @Test
    public void testGetterSetterScale() {
        final int customerScale = 5;
        final Customer customerName = new Customer();
        customerName.setScale(5);
        Assert.assertEquals(customerName.getScale(),customerScale);
    }

    @Test
    public void testGetterSetterBirthdate() {
        Date birth= new Date(1991-8-27);
        final Customer customerBirth = new Customer();
        customerBirth.setBirthDate(new Date(1991-8-27));
        Assert.assertEquals(customerBirth.getBirthDate(),birth);
    }

    @Test
    public void testGetterSetterAfm() {
        final String Afm = "12345678";
        final Customer customerAfm = new Customer();
        customerAfm.setAfm("12345678");
        Assert.assertEquals(customerAfm.getAfm(),Afm);
    }

    @Test
    public void testGetterSetterID() {
        final int id = 12345678;
        final Customer customerID = new Customer();
        customerID.setId(12345678);
        Assert.assertEquals(customerID.getId(),id);
    }

    @Test
    public void testGetterSetterAddress() {
        Address address = new Address(new Address("someName", "numberStreet", "location", "postalCode", "Country"));
        final Customer customerAddress = new Customer();
        customerAddress.setAddress(new Address("someName", "numberStreet", "location", "postalCode", "Country"));
        Assert.assertEquals(customerAddress.getAddress(),address);
    }
    @Test
    public void testGetterSetterPhonenumber() {
        final String customerPhone = "2103948576";
        final Customer phone = new Customer();
        phone.setPhonenumber("2103948576");
        Assert.assertEquals(phone.getPhonenumber(),customerPhone);
    }
    @Test
    public void toStringTest(){

        String name = "Customer [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", birthDate=" + birthDate
                + ", scale=" + scale + ", address=" + address + ", afm=" + afm + ", phonenumber=" + phonenumber + "]";

        String toString = name.toString();

        Assert.assertTrue((boolean)toString.contains( "Customer [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", birthDate=" + birthDate
                + ", scale=" + scale + ", address=" + address + ", afm=" + afm + ", phonenumber=" + phonenumber + "]"));

    }



    @SuppressWarnings("unchecked")
    private void carBidirectionalAssociationInvariant(Customer customer) {
        for(Car car : customer.getCars()) {

            //((List<Car>) customer).add(new Car("suzuki swift", "red", new Date(2014-11-12), "DTP12346"));
            Assert.assertSame( car.getCustomer(),customer.getCars());
        }
    }


    private void claimBidirectionalAssociationInvariant(Customer customer) {
        for(InsuranceClaim claim : customer.getInsuranceClaims()) {
            claim.setAmount(50.00);

            Assert.assertSame(claim.getAmount(), 50.00);

            //Assert.assertTrue(InsuranceClaim.setDmage("Damage Inc").contains(customer));
        }
    }


}

要测试getHashCodeequals只需创建您期望相等的对象和您期望不相等的对象,并验证当期望它们相等时, equals返回true ,并且哈希码相同,并且当它们相等时预期不同然后equals返回false ,并且哈希码不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM