Чтобы избежать много избыточных тестовых классов для простого тестирования интеграции, я хотел бы создать параметризованный общий тестовый класс, как в следующем примере:Как запустить общий параметризованный тест JUnit в Eclipse?
@RunWith(Parameterized.class)
public class MovementTest<V extends Vehicle, T extends Track<V>> {
private final V testVehicle;
private final T testTrack;
public MovementTest(V vehicle, T track){
testVehicle = vehicle;
testTrack = track;
}
@Test
public void testMovement(){
testVehicle.moveAlong(testTrack);
}
@Parameters
public static Iterable<Object[]> provideTestExamples(){
Object[][] params = {
{ new Car(), new Highway() },
{ new Train(), new RailRoadTrack() }
};
return Arrays.asList(params);
}
}
public interface Vehicle {
abstract void moveAlong(Track t);
}
public interface Track<E extends Vehicle> { }
public class Train implements Vehicle {
@Override
public void moveAlong(Track t) {}
}
public class RailRoadTrack implements Track<Train> {}
public class Car implements Vehicle {
@Override
public void moveAlong(Track t) { }
}
public class Highway implements Track<Car> {}
К сожалению, этот тест класс не работоспособный. Есть ли краткий способ реализовать что-то подобное?
Любой StackTrace, лаг, что угодно? У вас есть Object [] [] params, но создаются новые Object [] – Gaskoin
@Gaskoin Исправлено. Кроме того, Eclipse не предоставляет возможность запускать этот тестовый класс, поэтому нет stacktrace. –
Бегун Eclipse JUnit будет работать против стираемого стилем байт-кода, поэтому не имеет значения, что MovementTest имеет общие параметры типа. Вы используете относительно недавнюю версию eclipse? Является ли JUnit 4 на пути к проекту? У меня нет проблем с параметризованными тестами - даже с параметрами типового типа - в eclipse Luna. –