0

リフレクションを使用して、多くの単体テスト (クラスとしてではなく、1 つずつ) を含むパッケージを実行しようとしています。実行する必要があるすべての @Test メソッドを取得したら、実行しようとしています。

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

しかし、packageAndClass で返されるクラスには、@Before、@BeforeClass メソッドがあります (これもスーパークラスにある可能性があります)。

したがって、上記のコードを実行すると、すべてのテストが実行されて失敗します (それらの値の一部が @Before および @BeforeClass メソッドで割り当てられているため)。しかし、Eclipse から実行すると (テスト メソッド名を選択 -> 右クリック -> 実行) as -> Junit テスト) それらはすべてパスします (一緒に実行するか、1 つずつ実行します) before メソッドを実行する Request の API はありますか?

4

2 に答える 2

3

どうしてそんなことをするのか?JUnit がテストを実行することになっています。

于 2012-09-03T07:22:05.547 に答える
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

メソッドが実行されていないことを本当に確信していますか?

于 2012-09-03T14:34:37.433 に答える