我是JUnit Testing的新成员,对它的工作原理感到好奇。目前我正在尝试通过单元测试。方法的Java JUnit测试
的测试方法是
@Test
public void ensure_equals_method_is_properly_coded()
{
assertTrue(employees.get(0).equals(employees.get(2)));
assertFalse(employees.get(0).equals(employees.get(1)));
assertFalse(employees.get(0).equals(employees.get(3)));
}
我已经填充了它价值的ArrayList。根据我的理解,我假设要编写一个名为equals()的方法来让我的任务通过这个测试。我的问题是该方法如何找到测试方法。我在一个名为Persons的类中创建了一个equals()方法,但我不知道在运行测试时是否会调用它。
我的第二个问题是质疑我的equal()方法中的逻辑。到目前为止,我有这个。
public boolean equals() {
if (employees.get(0).equals(employees.get(2)))
return true;
return false;
}
这应该返回true,因为第一个测试项断言为真。我的逻辑正确吗?
只是为了清楚这里是我的完整的测试类一切都已经存在。
public class Tests
{
List<Person> employees = new ArrayList<Person>();
@Before
public void init()
{
Person anEmployee = new Employee();
anEmployee.setName("Trevor Page");
anEmployee.setSex("Male");
Calendar cal = Calendar.getInstance();
cal.set(1983, 0, 1);
anEmployee.setBirthday(cal.getTime());
((Employee)anEmployee).setJobTitle("Sr. Software Engineer");
((Employee)anEmployee).setOrganization(new Google("Google"));
employees.add(anEmployee);
anEmployee = new Employee();
anEmployee.setName("Jane Doe");
anEmployee.setSex("Female");
anEmployee.setBirthday(cal.getTime());
((Employee)anEmployee).setJobTitle("Sr. Software Engineer");
((Employee)anEmployee).setOrganization(new Google("Google"));
employees.add(anEmployee);
anEmployee = new Employee();
anEmployee.setName("Trevor Page");
anEmployee.setSex("Male");
anEmployee.setBirthday(cal.getTime());
((Employee)anEmployee).setJobTitle("Sr. Software Engineer");
((Employee)anEmployee).setOrganization(new Google("Google"));
employees.add(anEmployee);
anEmployee = new Employee();
anEmployee.setName("Trevor Page");
anEmployee.setSex("Male");
anEmployee.setBirthday(cal.getTime());
((Employee)anEmployee).setJobTitle("Sr. Software Engineer");
((Employee)anEmployee).setOrganization(new Microsoft("Microsoft"));
employees.add(anEmployee);
}
@Test
public void ensure_toString_method_is_properly_coded()
{
String message = "Name: Trevor Page, Sex: Male" +
"\nJob Title: Sr. Software Engineer, Organization: Google";
assertThat(employees.get(0).toString(), is(message));
}
@Test
public void ensure_equals_method_is_properly_coded()
{
assertTrue(employees.get(0).equals(employees.get(2)));
assertFalse(employees.get(0).equals(employees.get(1)));
assertFalse(employees.get(0).equals(employees.get(3)));
}
这是我的完整的人类是抽象的。我已经有了第一个测试案例。
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public abstract class Person
{
public abstract String getName();
public abstract String getSex();
public abstract void setName(String name);
public abstract void setSex(String sex);
public abstract void setBirthday(Date birthdate);
public abstract Date getBirthday();
public abstract String getJobTitle();
public abstract String getNameOfOrganization();
List<Person> employees = new ArrayList<Person>();
@Override
public String toString() {
return "Name: " + getName() + ", Sex: " + getSex() + "\n" + "Job Title: " + getJobTitle() + ", Organization: " + getNameOfOrganization() ;
}
}
我有另一个叫Employee的类扩展了这个Abstract Class。
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class Employee extends Person
{
List<String> employees = new ArrayList<String>();
@Override
public String getName() {
employees.add("Trevor Page");
return employees.get(0);
}
@Override
public String getSex() {
employees.add("Male");
return employees.get(1);
}
@Override
public void setName(String name) {
// TODO Auto-generated method stub
}
@Override
public void setSex(String sex) {
// TODO Auto-generated method stub
}
@Override
public void setBirthday(Date birthdate) {
// TODO Auto-generated method stub
}
@Override
public Date getBirthday() {
// TODO Auto-generated method stub
return null;
}
public void setJobTitle(String string) {
// TODO Auto-generated method stub
}
public String getJobTitle() {
employees.add("Sr. Software Engineer");
return employees.get(2);
}
public void setOrganization(Google google) {
// TODO Auto-generated method stub
}
public void setOrganization(Microsoft microsoft) {
// TODO Auto-generated method stub
}
@Override
public String getNameOfOrganization() {
employees.add("Google");
return employees.get(3);
}
}
我能够通过运气得到第一个测试工作。我不知道单元测试如何知道如何测试我的值。
不清楚,你的程序在哪里等于方法?对名为Person的抽象类使用 –
。 –
以及在哪里定义了名为'employees'的变量? –