使用反射逐个运行@Test

时间:2012-09-03 07:16:02

标签: java unit-testing junit

我正在尝试使用反射来运行包含许多单元测试的包(一个接一个,而不是作为一个类) 所以当我得到所有需要运行的@Test方法时,我会尝试

Result result = new JUnitCore().run(Request.method(Class
                                .forName(packageAndClass),getTestName()));

但是在packageAndClass中返回的类有 @ Before,@ ByClass方法(也可能在其超类中)

因此,当运行上面的代码时,我会让所有测试运行并失败(因为它们的一些值是在@Before和@BeforeClass方法中分配的) 但是当从eclipse运行它时(选择测试方法名称 - >右键单击 - >运行为 - > Junit测试) 他们都通过(一起跑或一个一个地跑) 是否有一个请求api将运行before方法?

2 个答案:

答案 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

你真的确定这些方法没有运行吗?

相关问题