LoginSignup
1
0

More than 3 years have passed since last update.

Junitを使ってみる

Posted at

引き続きJunitネタです。
前回はJunitを導入するところまでやったので、今回は実際に使ってみます。

1.テスト対象となるクラスを実装しておきます。
わたしは以下のような感じで分岐処理を作ってみました。

TestClass
    public String testMethod(String str) {
        String res = "";
        if (str.equals("おはよう")) {
            res = "朝";
        } else if (str.equals("こんにちは")) {
            res = "昼";
        } else if (str.equals("こんばんは")) {
            res = "夜";
        } else {
            res = "エラー";
        }
        return res;
    }

2.次に、テストクラスを実装します。

JunitTestClass
    @Test
    public void test() {
        TestClass testClass = new TestClass();
        String str = "おはよう";
        String result = testClass.testMethod(str);
        assertEquals(result, "朝");
    }

3.それぞれのクラスの実装が出来たので、さっそくJunitを実行してみます。
テストクラス(今回の場合はJunitTestClass.java)を右クリックし、「実行」→「Junitテスト」を選択します。
01.png

4.Junitの実行結果が表示されます。エラーはなかったみたいですね。
02.png

5.ついでなので失敗ケースも見てみましょう。
以下のように失敗用のメソッドをテストクラスに追加します。

JunitTestClass
    @Test
    public void testFail() {
        TestClass testClass = new TestClass();
        String str = "おはよう";
        String result = testClass.testMethod(str);
        assertEquals(result, "昼");
    }

6.再度Junitを実行してみると、以下のようにJunitの実行結果が表示されます。
ちゃんと失敗してますね。
03.png

7.ちなみにエラー内容は以下の通り。
ちゃんと何行目にどういうエラーが発生しているか書いてあるので親切です。

error.log
org.junit.ComparisonFailure: expected:<[]> but was:<[]>
    at org.junit.Assert.assertEquals(Assert.java:115)
    at org.junit.Assert.assertEquals(Assert.java:144)
    at test.JunitTestClass.testFail(JunitTestClass.java:29)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

Junitの使い方はひとまず以上です。
次は何がいいかな……。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0