java - 你如何用 junit 测试 if 语句?

标签 java junit

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

我有这个 if 语句:

if (basket.getCustomerId() != null) {
                Basket exBasket = findBasketByCustomerId(basket.getCustomerId());
                if (exBasket != null && exBasket.getBasketId() != null) {
                    return exBasket;
                }

我想编写一个单元测试来测试每一行,看看它是否在做正确的事情。

有什么想法吗?

@Test
    public void testBasketWithANullCustomerId(){
        basketInformationServiceImpl.createBasket(mockBasket);
        assertNotNull(mockBasket.getCustomerId());
    }

最佳答案

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

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

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

  • 购物篮,带有null 客户 ID;
  • 一个 null 篮子(除非您确定这永远不会发生),因为目前这段代码将给出一个 NullPointerException
  • 一个具有客户 ID 的购物篮,您可以使用该 ID 找到已知的 exBasket
  • 具有客户 ID 的购物篮将返回 nullexBasket
  • 具有客户 ID 的购物篮将返回一个非空的 exBasket,但其购物篮 ID 为 null

关于java - 你如何用 junit 测试 if 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27605211/

相关文章:

java - 为什么我收到输入不匹配异常?

java - 使泛型数组返回与其传递的参数类型相同的数组

java - "Forwarding"用Java上传图片

java - 如何忽略 webservice junit 测试中的验证/ConstraintValidator?

java - 比较 XML 时如何忽略某些元素?

Java Thread.suspend 精确语义

java - 如何将 application.properties 加载到测试类中以获取 spring.profiles.active 值?

junit - 在 kotlin 中释放变量

scala - Intellij 似乎忽略了我在 Scala 项目中的 JUnit 测试

java - 将对象添加到 ArrayList 并在 Java 中给出 NullPointerException