在以下情况下我应该如何编写 JUnit 测试?
How Should I write JUnit test in the following case?
我是单元测试的新手。
我有一个class Ckeckout
,主要功能是打印书籍的支付金额。用户在命令行中输入书名,根据一些计算,我必须输出最终价格。
这里是 Book
class:
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
class:
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
方法。但是,要这样做,我是否必须在 CheckoutTest
中创建 Book
对象列表?另外,我将不得不用一些很长的数字(比如 62.01997301)来验证最终结果。测试 main() 方法不是更容易吗,因为在我的单元测试中,不需要创建 Book
对象(我将只使用 Strings
)并且我可以用更短的数字(如 62.01)验证输出吗?
但是,要这样做,我是否必须在我的 CheckoutTest 中创建 Book 对象列表?:一般来说,任何类型 - 是的!
此外,我将不得不用一些很长的数字(比如 62.01997301)来验证最终结果:Naah,this 取决于您的定位 test/code 质量! (对于 "price" 2 位数字应该足够了(在任何国家!?))
测试 main() 方法不是更容易吗,因为在我的单元测试中,不需要创建 Book 对象(我将只使用字符串)我可以用更短的数字(比如 62.01)验证输出? 肯定会!但是对于当前的设置,一些(人类)必须检查控制台是否有 "passing that test",对于 JUnit(并以编程方式测试该值),您 should/will需要使 "getPrice() more visible" ... 或以某种方式访问它的值。
我是单元测试的新手。
我有一个class Ckeckout
,主要功能是打印书籍的支付金额。用户在命令行中输入书名,根据一些计算,我必须输出最终价格。
这里是 Book
class:
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
class:
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
方法。但是,要这样做,我是否必须在 CheckoutTest
中创建 Book
对象列表?另外,我将不得不用一些很长的数字(比如 62.01997301)来验证最终结果。测试 main() 方法不是更容易吗,因为在我的单元测试中,不需要创建 Book
对象(我将只使用 Strings
)并且我可以用更短的数字(如 62.01)验证输出吗?
但是,要这样做,我是否必须在我的 CheckoutTest 中创建 Book 对象列表?:一般来说,任何类型 - 是的!
此外,我将不得不用一些很长的数字(比如 62.01997301)来验证最终结果:Naah,this 取决于您的定位 test/code 质量! (对于 "price" 2 位数字应该足够了(在任何国家!?))
测试 main() 方法不是更容易吗,因为在我的单元测试中,不需要创建 Book 对象(我将只使用字符串)我可以用更短的数字(比如 62.01)验证输出? 肯定会!但是对于当前的设置,一些(人类)必须检查控制台是否有 "passing that test",对于 JUnit(并以编程方式测试该值),您 should/will需要使 "getPrice() more visible" ... 或以某种方式访问它的值。