在下列情况下如何编写JUnit测试?

时间:2015-04-06 09:27:14

标签: java unit-testing junit

我是单元测试的新手。 我有一个班级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)?

1 个答案:

答案 0 :(得分:1)

  1. 但是,要这样做,我是否必须在CheckoutTest中创建Book对象列表?:通常和任何类型 - 是的

  2. 此外,我必须使用一些非常长的数字验证最终结果(例如62.01997301): Naah 取决于您的定位测试/代码质量! (对于“价格”,2位数就足够了(在任何国家!?))

  3. 测试main()方法是不是更容易,因为在我的单元测试中,不需要创建Book对象(我只使用字符串),我可以验证数字较短的输出(如62.01)? 绝对!但是对于当前的设置,一些(人类)必须检查控制台“传递该测试”,对于JUnit(并以编程方式测试该值),您应该/将需要制作“getPrice” ()更明显“......或以某种方式访问​​其价值。