我是单元测试的新手。
我有一个班级Ckeckout
,其主要功能是打印要为书籍支付的金额。用户在命令行中键入书籍的标题,并根据一些计算我必须输出最终价格。
这是Book
类:
public class Book {
private String title;
private double price;
private int year;
public Book(String title, double price, int year) {
super();
this.title = title;
this.price = price;
this.year = year;
}
}
这是Checkout
类:
public class Checkout {
private List<Book> books;
public Checkout(List<Book> books) {
super();
this.books = books;
}
//calculate the final price
private double getPrice(){
//return some double
}
}
我想测试的只是getPrice
方法。但是,为此,我是否必须在Book
中创建CheckoutTest
个对象的列表?此外,我将用一些非常长的数字(如62.01997301)验证最终结果。是不是更容易测试main()方法,因为在我的单元测试中,不需要创建Book
对象(我只会使用Strings
)和我可以用较短的数字验证输出(如62.01)?
答案 0 :(得分:1)
但是,要这样做,我是否必须在CheckoutTest中创建Book对象列表?:通常和任何类型 - 是的!
此外,我必须使用一些非常长的数字验证最终结果(例如62.01997301): Naah ,此取决于您的定位测试/代码质量! (对于“价格”,2位数就足够了(在任何国家!?))
测试main()方法是不是更容易,因为在我的单元测试中,不需要创建Book对象(我只使用字符串),我可以验证数字较短的输出(如62.01)? 绝对!但是对于当前的设置,一些(人类)必须检查控制台“传递该测试”,对于JUnit(并以编程方式测试该值),您应该/将需要制作“getPrice” ()更明显“......或以某种方式访问其价值。