4

junit4 では、さまざまなクラスから特定のテスト メソッドを実行したい、つまり、さまざまなクラスから特定のテスト メソッドを含むテスト スイートを作成したい。

2つのクラスがあるとしましょう:

public class Test_Login {
    @Test
    public void test_Login_001(){
        System.out.println("test_Login_001");
    }

    @Test
    public void test_Login_002(){
        System.out.println("test_Login_002");
    }

    @Test
    public void test_Login_003(){
        System.out.println("test_Login_003");
    }
}


public class Logout {   

    @Test
    public void test_Logout_001(){  
        System.out.println("test_Logout_001");  
    }

    @Test
    public void test_Logout_002(){
        System.out.println("test_Logout_002");
    }

    @Test
    public void test_Logout_003(){
        System.out.println("test_Logout_003");
    }
}

上記のクラスから、テスト メソッド test_Login_001 、 test_Login_003 、 test_Logout_002 のみを実行します。

これは junit4 でどのように達成できますか?

4

3 に答える 3

1

org.junit.runner.Request を作成し、それを JunitCore ランナー、または実際には任意のランナーに渡す必要があります。

JUnitCore junitRunner = new JUnitCore();
Request request = Request.method(Logout.class, "test_Logout_002");
Result result = junitRunner.run(request);

実際にアノテーションを作成し、それらのアノテーションを使用してメソッドを検索し、動的にリクエストを作成して実行できます

public class TestsSuite {

public static void main(String[] args) throws Exception {
    Class annotation = MyTestAnnotation.class;
    JUnitCore junitRunner = new JUnitCore();
    Class testClass = Test_Login.class;
    Method[] methods = testClass.getMethods();
    for (Method method : methods) {
        if (method.isAnnotationPresent(annotation)) {
            if (method.isAnnotationPresent(org.junit.Test.class)) {
                Request request = Request.method(testClass, method.getName());
                Result result = junitRunner.run(request);
                System.out.println(result.wasSuccessful());
            }
        }
    }
}

}

于 2013-04-16T02:27:49.337 に答える