你如何用junit测试if语句?

Blu*_*ark 2 java junit

我似乎无法找到任何解决此问题的在线教程

我有这样的if声明:

if (basket.getCustomerId() != null) {
                Basket exBasket = findBasketByCustomerId(basket.getCustomerId());
                if (exBasket != null && exBasket.getBasketId() != null) {
                    return exBasket;
                }
Run Code Online (Sandbox Code Playgroud)

我想写一个单元测试,测试每一行,看看它是否做得对.

有任何想法吗?

@Test
    public void testBasketWithANullCustomerId(){
        basketInformationServiceImpl.createBasket(mockBasket);
        assertNotNull(mockBasket.getCustomerId());
    }
Run Code Online (Sandbox Code Playgroud)

chi*_*ity 9

单元测试的目的不是测试语句而是方法.正确的做法是不考虑这一行,而是考虑它出现的方法,并询问你想要该方法做什么:它需要什么样的输入,以及它应该产生什么样的输出?

然后编写带有一些典型输入的测试,并检查它们是否给出正确的输出,以及一些边缘情况输入(如null0 Integer.MAX_VALUE,等)并检查您是否也获得了正确的输出.

如果这是你的整个方法(实际上它不是,但如果它是它的本质),我会测试:

  • a basket带有null客户ID;
  • null篮子(除非你确定这种情况永远不会发生),因为目前这段代码会给出一个NullPointerException;
  • 一个拥有客户ID的篮子,可以让你找到一个已知的exBasket;
  • 具有客户ID,将返回的一篮子exBasketnull;
  • 一个篮子,其客户ID将返回一个exBasket非空的,但其篮子ID为null.