不兼容的类型。发现:'java.郎。班级<org. junit. runners. Parameterized>',

问题描述 投票:0回答:1

我有以下 JUnit 4 测试:

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

import java.util.Arrays;
import java.util.Collection;

@RunWith(Parameterized.class)
public class LocaleTest {
    
  @Parameterized.Parameters(name = "{index}: Locale={0}, valid={1}")
  public static Collection<Object[]> opt() {
    Object[][] options = new Object[][]{{"os_PT", true}, {"en_PH", true}......};
    return Arrays.asList(options);
  }

}

我需要将其迁移到 JUnit 5:

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.runners.Parameterized;

import java.util.Arrays;
import java.util.Collection;

@ExtendWith(Parameterized.class)
public class LocaleTest {
    
  @Parameterized.Parameters(name = "{index}: Locale={0}, valid={1}")
  public static Collection<Object[]> opt() {
    Object[][] options = new Object[][]{{"os_PT", true}, {"en_PH", true}......};
    return Arrays.asList(options);
  }

}

但是我收到错误:

Incompatible types. Found: 'java. lang. Class<org. junit. runners. Parameterized>', required: 'java. lang. Class<? extends org. junit. jupiter. api. extension. Extension>[]'

在这一行:

@ExtendWith(Parameterized.class)

你知道我如何正确迁移这段代码吗?

java junit junit5
1个回答
0
投票

现在不需要

@RunWith
@ExtendWith
,只需:

class MyTests {
    @ParameterizedTest
    @MethodSource("parameterSource")
    void doit(String s, int i){
        assertEquals(s, Integer.toString(i));
    }

    public static Stream<Arguments> parameterSource() {
        return Stream.of(
                Arguments.of("1", 1),
                Arguments.of("2", 2)
        );
    }
}

有多个可用的

*Source
注释。

© www.soinside.com 2019 - 2024. All rights reserved.