我是JUnit的新手,在编写JUnit时面临困难。
我有一个界面和一个类
接口
public interface Student{
List<String> getStudentList();
void setStudentList(List<String> studentList);
void createStudentList();
}
类
public class StudentServiceImpl implements Student{
private List<String> studentList
public List<String> getStudentList() {
return studentList;
}
public void setStudentList(final List<String> studentList){
this.studentList = studentList;
}
public void createStudentList(){
if (studentList == null) {
studentList = new ArrayList<String>();
studentList.add("John");
studentList.add("Bill");
studentList.add("Ricky");
studentList.add("Jack");
}
setStudentList(studentList);
}
}
为上课写Junit最好的是什么。在编写JUnit案例时应该记住什么。有人可以帮帮我吗?
答案 0 :(得分:2)
以下是恕我直言写得很好的测试用例的例子(用记事本写的,如果不编译,请更正):
import static org.fest.assertions.Assertions.assertThat;
public class StudentTest {
private final Student student = new StudentServiceImpl();
@Test
public void shouldReturnEmptyListOfStudentsWhenNotInitialized() {
//given
//when
List<String> students = student.getStudentList();
//then
assertThat(students).isEmpty();
}
@Test
public void shouldReturnSomeStudentsWhenListCreated() {
//given
student.createStudentList();
//when
List<String> students = student.getStudentList();
//then
assertThat(students).containsExactly("John", "Bill", "Ricky", "Jack");
}
@Test
public void shouldStorePreviouslySetListOfStudents() {
//given
student.setStudentList(Arrays.asList("Jane", "Bob"));
//when
List<String> students = student.getStudentList();
//then
assertThat(students).containsExactly("Jane", "Bob");
}
}
保持测试简短
测试名称应描述正在测试的用例
单独设置代码,测试逻辑和断言
代码应易于阅读。使用流畅的描述性库,例如FEST
第一次测试应该失败,你知道为什么吗?
仍然缺少一些测试,你知道哪些测试吗?