我正在尝试使用反射来运行包含许多单元测试的包(一个接一个,而不是作为一个类) 所以当我得到所有需要运行的@Test方法时,我会尝试
Result result = new JUnitCore().run(Request.method(Class
.forName(packageAndClass),getTestName()));
但是在packageAndClass中返回的类有 @ Before,@ ByClass方法(也可能在其超类中)
因此,当运行上面的代码时,我会让所有测试运行并失败(因为它们的一些值是在@Before和@BeforeClass方法中分配的) 但是当从eclipse运行它时(选择测试方法名称 - >右键单击 - >运行为 - > Junit测试) 他们都通过(一起跑或一个一个地跑) 是否有一个请求api将运行before方法?
答案 0 :(得分:3)
你为什么这样做? JUnit应该为你运行测试!
答案 1 :(得分:0)
我用junit 4.9运行了以下测试:
public class RunOneTest {
public static void main(final String[] args) {
final Result result = new JUnitCore().run(Request.method(RunOneTest.class, "oneTest"));
System.out.println("result " + result.wasSuccessful());
}
@Test
public void oneTest() throws Exception {
System.out.println("oneTest");
}
@Test
public void anotherTest() throws Exception {
System.out.println("anotherTest");
}
@Before
public void before() {
System.out.println("before");
}
@BeforeClass
public static void beforeClass() {
System.out.println("beforeClass");
}
@After
public void after() {
System.out.println("after");
}
@AfterClass
public static void afterClass() {
System.out.println("afterClass");
}
}
,输出结果为:
beforeClass
before
oneTest
after
afterClass
result true
你真的确定这些方法没有运行吗?