【发布时间】:2018-07-21 07:03:15
【问题描述】:
试图确保我了解 JUnit 和 TDD。
第一个测试是在添加任何内容之前测试篮子是否为空。
@Test
public void test_GetBooksInBasket_ReturnEmptyBookList_IfNoBooksHaveBeenAdded(){
//Arrange
Basket basket = new Basket();
//Act
List<Object> test = basket.getBooksInBasket();
//Assert
assertThat(test.size(),is(1));
System.out.println(test.size());
}
班级
public class Book {
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Basket {
private List<Object> bookList = new ArrayList<Object>();
public List<Object> getBooksInBasket(){
return bookList;
}
}
只是想知道我是否正确地完成了第一个测试用例。由于列表为空,我在测试 1 时失败了。
测试2。代码与上面相同,但将一本书添加到购物篮并检查篮子中的书籍数量是否等于1。
public void test_GetBooksInBasket_ReturnsArrayOfLengthOne_After_AddBookMethodIsCalledWithOneBook(){
//Arrange
Basket basket = new Basket();
Book book = new Book();
//Act
List<Object> test = basket.addBook(book);
//Assert
assertThat(test.size(),is(0));
}
public class Basket {
private List<Object> bookList = new ArrayList<Object>();
public List<Object> getBooksInBasket(){
return bookList;
}
public List<Object> addBook(Book book){
Book book1 = new Book();
//Book book3 = new Book();
bookList.add(book1);
return bookList;
}
}
无论我输入的尺寸是多少,都不会因此而失败。
测试 3 增加了 2 本书,所以我尝试了这个
public void test_GetBooksInBasket_ReturnsArrayOfLengthOne_After_AddBookMethodIsCalledWithOneBook(){
//Arrange
Basket basket = new Basket();
Book book = new Book();
//Act
List<Object> test = basket.addBook(book,book);
//Assert
assertThat(test.size(),is(0));
}
public List<Object> addBook(Book book, Book book1){
Book book2 = new Book();
Book book3 = new Book();
bookList.addAll(Arrays.asList(book2, book3));
return bookList;
}
不确定我的第二个和第三个测试用例是否正常工作。
【问题讨论】:
-
您应该根据实际值断言预期值。如果您希望
List为空,则执行如下断言:assertEquals(0 /* expected */, list.size() /* actual */)。 -
@trylimits 好的,谢谢,我切换到我的第一个测试用例并且它有效。你知道我应该为另外两个做什么吗?
-
做同样的事情:根据期望值断言。添加一本书后,您会期望篮子中恰好包含一本书。所以像这样断言:
assertEquals(1 /* expected */, list.size()). -
@trylimits 的问题是尝试一下,如果我输入 0 1 或 2,它仍然会出现
标签: java unit-testing arraylist junit tdd