Anj*_*Tom 0 java testing junit
这是我第一次使用JUNIT而且我实际上无法使用它.
我有一个person类,其中包含firstName和lastName,以及一个我需要测试方法的测试类.每次我尝试测试一个,如果我为特定方法编写了测试,它就会失败.
这是我的代码.
人类
public class Person {
private String firstName;
private String lastName;
public Person (String a, String b) {
firstName = a;
lastName = b;
}
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;
}
@Override
public String toString() {
return firstName + " " + lastName;
}
}
Run Code Online (Sandbox Code Playgroud)
人测试课
public class PersonTest {
Person p1;
public PersonTest() {
Person p1 = new Person ("Thomas", "Brown");
}
@Before
public void setUp() {}
@After
public void tearDown() {}
@Test
public void testGetfirstName() {
assertEquals("Thomas", p1.getfirstName());
}
@Test
public void testSetfirstName() {}
@Test
public void testGetlastName() {
assertEquals("Brown", p1.getlastName());
}
@Test
public void testSetlastName() {}
@Test
public void testToString() {
assertEquals("Thomas Brown", p1.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
有人能指出我正确的方向吗?
这是正确的方法:
@Before
public void setUp() {
p1 = new Person ("Thomas", "Brown");
}
Run Code Online (Sandbox Code Playgroud)
您的代码中有2个问题.
public PersonTest() {
Person p1 = new Person ("Thomas", "Brown");
}
Run Code Online (Sandbox Code Playgroud)
这会创建一个局部变量,并p1保持您的字段null.
第二个是你的setUp方法中没有初始化p1.
您注释的方法@Before将在每次测试之前运行,应该将初始化放在那里.我还建议使用更具描述性的名称,以便您应该更改p1为target或类似的名称.
编辑:对于您的set...方法,您可以执行以下操作:
public class PersonTest {
private static final String TEST_FIRST_NAME = "some name";
Person target;
// ...
@Test
public void testSetFirstName() {
target.setFirstName(TEST_FIRST_NAME);
Assert.assertEquals(target.getFirstName(), TEST_FIRST_NAME);
}
}
Run Code Online (Sandbox Code Playgroud)
那时你可以假设它getFirstName有效,因为你也对它进行了测试.
旁注:我认为只要您使用Eclipse生成它们,就不必测试getter和setter.这只是不必要的.
| 归档时间: |
|
| 查看次数: |
22699 次 |
| 最近记录: |