I have the following JUnit 4 test:
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);
}
}
I need to migrate it to 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);
}
}
But I get error:
Incompatible types. Found: 'java. lang. Class<org. junit. runners. Parameterized>', required: 'java. lang. Class<? extends org. junit. jupiter. api. extension. Extension>[]'
At this line: @ExtendWith(Parameterized.class)
Do you know how I can properly migrater this code?
I have the following JUnit 4 test:
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);
}
}
I need to migrate it to 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);
}
}
But I get error:
Incompatible types. Found: 'java. lang. Class<org. junit. runners. Parameterized>', required: 'java. lang. Class<? extends org. junit. jupiter. api. extension. Extension>[]'
At this line: @ExtendWith(Parameterized.class)
Do you know how I can properly migrater this code?
Don't need @RunWith
or @ExtendWith
now, just:
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)
);
}
}
There are several *Source
annotations available.