首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在参数化测试类中排除非参数测试

在参数化测试类中排除非参数测试,可以通过以下方法实现:

  1. 使用@ParameterizedTest注解:在测试类中使用@ParameterizedTest注解,这样只有使用@ValueSource@EnumSource@CsvSource等注解提供的参数化测试方法才会被执行。
  2. 使用@TestInstance注解:在测试类上使用@TestInstance注解,并将PER_CLASS作为参数传递给该注解。这样可以确保测试类中的所有方法都只被执行一次,而不是每个参数化测试方法都执行一次。
  3. 使用@Nested注解:在测试类中使用@Nested注解,将参数化测试方法放在嵌套类中。这样可以将参数化测试方法与非参数测试方法分开,确保非参数测试方法不会被执行。
  4. 使用@Tag注解:在非参数测试方法上使用@Tag注解,并为其添加一个标签,例如"non-parameterized"。然后,在测试运行器中排除具有该标签的方法。

例如,以下是一个使用JUnit 5编写的测试类,其中排除了非参数化测试方法:

代码语言:java
复制
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

public class ParameterizedTestExample {

    @ParameterizedTest
    @ValueSource(ints = {1, 2, 3})
    void parameterizedTest(int value) {
        System.out.println("Parameterized test: " + value);
    }

    @Test
    @Tag("non-parameterized")
    void nonParameterizedTest() {
        System.out.println("Non-parameterized test");
    }

    @Nested
    @TestInstance(TestInstance.Lifecycle.PER_CLASS)
    class NestedTest {

        @ParameterizedTest
        @ValueSource(ints = {4, 5, 6})
        void nestedParameterizedTest(int value) {
            System.out.println("Nested parameterized test: " + value);
        }

        @Test
        @Tag("non-parameterized")
        void nestedNonParameterizedTest() {
            System.out.println("Nested non-parameterized test");
        }
    }
}

在上面的示例中,parameterizedTest方法是一个参数化测试方法,而nonParameterizedTest方法是一个非参数化测试方法。NestedTest类是一个嵌套类,其中包含两个参数化测试方法和一个非参数化测试方法。通过使用@Nested@TestInstance@Tag注解,可以确保只有参数化测试方法被执行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券