Erstellen Sie daher die folgenden drei Klassen, um die Ausführungsreihenfolge zu steuern.
Als Prozessablauf wurde bei der Ausführung des Tests jeder Testmethode "OrderedRunner" hinzugefügt. Der Ablauf besteht darin, die Ausführungsreihenfolge durch Lesen des Einstellwerts von "Reihenfolge" zu steuern.
TestMethod.java
public enum TestMethod {
strArrayIsNullTest,
strIsNullTest
};
Order.java
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface Order {
TestMethod order();
}
OrderedRunner.java
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.InitializationError;
public class OrderedRunner extends BlockJUnit4ClassRunner {
public OrderedRunner(Class<?> klass) throws InitializationError {
super(klass);
}
@Override
protected List<FrameworkMethod> computeTestMethods() {
List<FrameworkMethod> list = super.computeTestMethods();
Collections.sort(list, new Comparator<FrameworkMethod>() {
@Override
public int compare(FrameworkMethod f1, FrameworkMethod f2) {
Order o1 = f1.getAnnotation(Order.class);
Order o2 = f2.getAnnotation(Order.class);
if (o1 == null || o2 == null){
return -1;
}
return o1.order().ordinal() - o2.order().ordinal();
}
});
return list;
}
}
Foo.java
public class Foo {
public static boolean isNull(String[] arg) {
return arg == null;
}
public static boolean isNull(String str) {
return str == null || str.length() == 0 || str.equals("");
}
}
FooTest.java
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(OrderedRunner.class)
public class FooTest {
@Test
@Order(order=TestMethod.strArrayIsNullTest)
public void strArrayIsNullTest() {
String[] arg = {"test"};
assertFalse(Foo.isNull(arg));
System.out.println("strArrayIsNullTest OK");
}
//Selbst wenn Sie einen Test hinzufügen, wird die Reihenfolge durch Hinzufügen eines Elements zu TestMethod garantiert.
/**
* @Test
* @Order(order=TestMethod.reservationsTest)
* public void reservationsTest();
*/
@Test
@Order(order=TestMethod.strIsNullTest)
public void strIsNullTest() {
String str = "test";
assertFalse(Foo.isNull(str));
System.out.println("strIsNullTest OK");
}
}
Referenzmaterial
Recommended Posts