Inicializar un List <?> En un JUnit través @Rule

Messol:

Estoy escribiendo un caso de prueba JUnit. Quiero inicializar una lista de objetos. Por razones de brevedad, vamos a inicializar una lista de Stringobjetos:

public class MyTest {
    @Rule
    public List<MySQLContainer> tests = Arrays.asList(new MySQLContainer("5.5"), new MySQLContainer("5.6"));

    @Test
    public void myTest() {

    }
}

Cuando se ejecuta, me sale el siguiente error de ejecución:

org.junit.internal.runners.rules.ValidationError: The @Rule 'tests' must implement MethodRule or TestRule.
at org.junit.internal.runners.rules.RuleMemberValidator$FieldMustBeARule.validate(RuleMemberValidator.java:234)
at org.junit.internal.runners.rules.RuleMemberValidator.validateMember(RuleMemberValidator.java:99)
at org.junit.internal.runners.rules.RuleMemberValidator.validate(RuleMemberValidator.java:93)
at org.junit.runners.BlockJUnit4ClassRunner.validateFields(BlockJUnit4ClassRunner.java:196)
at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:1

No entiendo como error al inicializar un simple MySQLContainerlugar de List<MySQLContainer>.

¿Por qué esto no funciona? ¿Cómo puedo arreglarlo?

Tengo JUnit 4.12 en mis dependencias.

Mureinik:

@Rules son para ejecutar código antes de cada método de prueba. Si sólo necesita para inicializar un miembro, poner esta inicialización en un método anotado con @Before:

public class MyTest {    
    private List<MySQLContainer> containers;

    @Before
    public void initContainers() {
        containers =  = Arrays.asList(new MySQLContainer("5.5"), new MySQLContainer("5.6"));
    }

    @Test
    public void myTest() {
        // Some test...    
    }
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=208398&siteId=1
Recomendado
Clasificación