首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助编写JUnit案例

问需要帮助编写JUnit案例
EN

Stack Overflow用户
提问于 2012-01-10 08:41:40
回答 1查看 134关注 0票数 0

我是JUnit新手,在写JUnit时遇到了困难。

我有一个接口和一个类

接口

代码语言:javascript
复制
public interface Student{

    List<String> getStudentList();
    void setStudentList(List<String> studentList);
    void createStudentList();
}

类

代码语言:javascript
复制
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案例时应该记住什么。有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-10 09:15:02

以下是IMHO编写良好的测试用例(用记事本编写,如果不编译请更正):

代码语言:javascript
复制
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");
    }

}

很少有小窍门:

  1. 保持测试的简短和简单
  2. 测试名称应该描述正在测试的用例。
  3. 独立的设置代码、测试的逻辑和断言
  4. 代码应该容易读懂。使用像喜庆这样的fluent和描述性库

进一步改进:

  1. 第一次考试会失败的,你知道为什么吗?
  2. 还有几个测试还没有完成,你知道是哪一个吗?
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8800494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档