【问题标题】:How to write JUnit test for switch case?如何为 switch case 编写 JUnit 测试?
【发布时间】:2022-11-03 15:39:29
【问题描述】:

例如,方法switchCase()。我如何为它编写测试代码?我可以创建 3 个不同的测试,每个测试使用不同的值,分别对应于 switch case 值,但我想尝试一种更有效的方法来做到这一点。

    public void switchCase() {

     String input = User.getInput();

        switch (number) {
            case 1:
                size = "small";
                break;
            case 2:
                size = "medium";
                break;
            case 3:
                size = "large";
                break;
        }
    }

我尝试的是使用@RunWith(JUnitParamsRunner.class)@ValueSource@ParameterizedTest。但是,这总是在第一个 whenjava.lang.Exception: Method testSwitchCase_SUCCESS should have no parameters 处产生 NullPointerException。可以帮助我吗?

   @Test
   @ParameterizedTest
   @ValueSource(strings = {"value1", "value2"})
   void testSwitchCase_SUCCESS(String s) {

      //have something

      when(User.getInput()).thenReturn("Test");

   }

【问题讨论】:

  • 将 UI 和 IO(从用户或从磁盘/网络获取数据)与转换数据的逻辑分开——您的代码将更容易测试。

标签: java unit-testing junit5


【解决方案1】:

使用@Test@ParameterizedTest 注释您的测试,但不能同时使用两者。

来自JUnit 5 documentation

参数化测试可以使用不同的参数多次运行测试。它们的声明方式与常规 @Test 方法一样但请改用@ParameterizedTest 注释.

@RunWith 注释也来自 JUnit 4。使用 JUnit 5 时,此注释是不必要的,应该删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 2021-03-03
    • 2021-02-03
    • 2022-11-04
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    相关资源
    最近更新 更多