我正在寻找一种在Junit中用一个测试来测试多个场景的方法,但是我还没有找到合适的语法。换句话说,我想写一些类似于Nunit代码的东西:
[TestCase(3, 2, true)] [TestCase(2, 3, true)] [TestCase(3, 3, true)] public void MyTest(int var1, int var2, bool var3) { ... }
字符串任何帮助都是感激的。
7eumitmz1#
@ParameterizedTest就是为了这个目的。一个单独的注解与它一起使用以提供数据。以下是使用它的官方指南。下面是一些如何使用它的例子:
@ParameterizedTest @ValueSource(strings = { "racecar", "radar", "able was I ere I saw elba" }) void palindromes(String candidate) { assertTrue(StringUtils.isPalindrome(candidate)); }
字符串
@ParameterizedTest @EnumSource void testWithEnumSourceWithAutoDetection(ChronoUnit unit) { assertNotNull(unit); }
型
@ParameterizedTest @MethodSource("stringProvider") void testWithExplicitLocalMethodSource(String argument) { assertNotNull(argument); } static Stream<String> stringProvider() { return Stream.of("apple", "banana"); }
@ParameterizedTest @CsvSource({ "apple, 1", "banana, 2", "'lemon, lime', 0xF1", "strawberry, 700_000" }) void testWithCsvSource(String fruit, int rank) { assertNotNull(fruit); assertNotEquals(0, rank); }
@ParameterizedTest @CsvFileSource(resources = "/two-column.csv", numLinesToSkip = 1) void testWithCsvFileSourceFromClasspath(String country, int reference) { assertNotNull(country); assertNotEquals(0, reference); }
@ParameterizedTest @ArgumentsSource(MyArgumentsProvider.class) void testWithArgumentsSource(String argument) { assertNotNull(argument); } public class MyArgumentsProvider implements ArgumentsProvider { @Override public Stream<? extends Arguments> provideArguments(ExtensionContext context) { return Stream.of("apple", "banana").map(Arguments::of); } }
型考虑到你的问题,@ValueSource似乎是最符合你的写法的。
@ValueSource
hs1rzwqc2#
让我们解决Leetcode TwoSum,并在单个@Test注解下编写两个测试Junit测试
@Test
int[] nums = {2, 7, 11, 5}; //second array int[] second_nums = {4, 5, 7, 9, 11}; @Test void twoSum(){ TwoSum twosum = new TwoSum(); assertArrayEquals(new int[]{2, 7}, twosum.twoSum(nums, 9)); //second test TwoSum twosum_second = new TwoSum(); assertArrayEquals(new int[]{5, 9}, twosum_second.twoSum(second_nums, 14)); }
字符串逻辑类
public class TwoSum(){ public int[] twoSum(int[] nums, int target){ //logic } }
2条答案
按热度按时间7eumitmz1#
@ParameterizedTest就是为了这个目的。一个单独的注解与它一起使用以提供数据。以下是使用它的官方指南。下面是一些如何使用它的例子:
值来源
字符串
枚举源
型
方法源
型
Cvs源码
型
Cvs文件源
型
参数来源
型
考虑到你的问题,
@ValueSource
似乎是最符合你的写法的。hs1rzwqc2#
让我们解决Leetcode TwoSum,并在单个
@Test
注解下编写两个测试Junit测试
字符串
逻辑类
型