其实还是上次的问题,在上一篇中提到解决办法是应用 JUnit4 里的 Rule 来实现,今天继续研究了下,觉得还是不够好,因为实际需求是,需要在运行测试的时候去动态skip 某些test,今天请教了下一位朋友,就有了如下代码:
package com.junit4test;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(MyRunner.class)
public class AprilTest {
@Test
public void test1() {
assert("abc".equals("abc"));
}
@Test
public void test2() {
assert("abc".equals("abc"));
}
@Test
public void test3() {
assert("abc".equals("abc"));
}
}
package com.junit4test;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.InitializationError;
public class MyRunner extends BlockJUnit4ClassRunner {
public MyRunner(Class<?> klass) throws InitializationError {
super(klass);
}
@Override
protected boolean isIgnored(FrameworkMethod child) {
if (child.getName().contains("3")) { // 此处可做动态判断,来觉得是否skip该test
return true;
} else {
return false;
}
}
}