JavaA2Z

KAB-studio > プログラミング > JavaA2Z > TestCaseとは

TestCase

日本語 試験例
英語 test case
ふりがな てすとけーす
フリガナ テストケース

解説

単体テストプログラム実装するためのクラス
JUnitに含まれるクラスのひとつ。パッケージも含めたクラス名はjunit.framework.TestCase。
 
通常、テスト対象のクラス1つにつき、そのクラスの最後に「Test」を付けたクラス名のクラスを作り、そのクラスをTestCaseクラスサブクラスとする。
テスト対象のメソッドひとつにつき、そのメソッドの頭に「test」を付けたメソッド名のメソッドを作る。そのメソッドは、テスト実時に自動的に呼び出される。
値が正しいかどうかのチェックはassertEquals()メソッド等でう。これらのメソッドは「正しい値」と「チェックする変数」を比較し、値が一致すればなにもせず、値が異なっている場合に例外を発生し、その際、どの値が異なっているのかを明確に出力する。
 
テストの実は、Eclipseデバッグ等でこのクラスを直接指定するか、TesterクラスのaddTestSuite()メソッドでTestCaseクラスサブクラスを指定する。

参考サイト


(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    /**
    *   テスト対象のメソッド。
    */
    public int plus( int iL, int iR )
    {
        return iL + iR;
    }

    /**
    *   テスト対象のメソッド(バグってる版)。
    */
    public int minus( int iL, int iR )
    {
        return iR - iL;
        // 間違えて逆に引いています。
    }
}


// Tester.java
import junit.framework.Test;
import junit.framework.TestSuite;

/**
*   このクラスを使うために、junit.jarに
*   クラスパスを通してください。junit.jarは
*   Junitをダウンロードしてくれば入っているはずです。
*/

/**
*   各テストメソッドを呼び出すクラス。
*
*   コンパイルを通すために、junit.jarにクラスパスを
*   通してください。junit.jarはEclipseに付いていますが、
*   最新版をダウンロードした方がいいでしょう。
*
*   Eclipseで実行する場合、メニューの【実行】-【デバッグ】の
*   【起動構成】から【JUnit】を選び【新規】で新規作成し、
*   【テスト・クラス】でこのクラスを指定してください。
*
*/
public class Tester
{
    /**
    *   JUnitから呼ばれるメソッド。
    *   main()メソッドみたいなものです。
    */
    public static Test suite()
    {
        // テストを登録するためのTestSuiteを作ります。
        TestSuite suite = new TestSuite();

        // テストケースを追加します。
        // このクラスのtestメソッドが呼ばれます。
        suite.addTestSuite( SampleTest.class );

        // TestSuite を返します。
        // この中に登録したテストクラスが実行されます。
        return suite;
    }
}


// SampleTest.java
import junit.framework.TestCase;

/**
*   Sampleクラスのテストクラスです。
*   SampleクラスのテストクラスなのでSampleTestです。
*   TestCaseクラスのサブクラスにします。
*/
public class SampleTest extends TestCase
{
    /**
    *   コンストラクタ。
    */
    public SampleTest()
    {
        // クラス名をセットします。
        super( SampleTest.class.toString() );
    }

    /**
    *   Sample#plus()メソッドをテストします。
    *   この、頭にtestが付いているメソッドが
    *   テストメソッドとみなされて自動的に
    *   呼び出されます。
    */
    public void testPlus() 
    {
        Sample sample = new Sample();
        int result = sample.plus( 2, 1 );
        // assertEquals()メソッドで結果をチェックします。
        // 第1引数に「予想される結果」を、
        // 第2引数にテスト対象の変数を渡します。
        assertEquals( 3, result );
        // 結果が一致しているので何も起きません。

        // assertEquals()メソッドの他に、assertFalse()や
        // assertNull()といったメソッドでチェックすることも
        // できます。
    }

    public void testMinus() 
    {
        Sample sample = new Sample();
        assertEquals( 1, sample.minus( 2, 1 ) );
        // junit.framework.AssertionFailedError: expected:<1> but was:<-1>
        //     at junit.framework.Assert.fail(Assert.java:47)
        //     at junit.framework.Assert.failNotEquals(Assert.java:282)
        //     at junit.framework.Assert.assertEquals(Assert.java:64)
        //     at junit.framework.Assert.assertEquals(Assert.java:201)
        //     at junit.framework.Assert.assertEquals(Assert.java:207)
        //     at SampleTest.testMinus(SampleTest.java:26)
        //     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        //     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        //     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        //     at java.lang.reflect.Method.invoke(Method.java:324)
        //     at junit.framework.TestCase.runTest(TestCase.java:154)
        //     at junit.framework.TestCase.runBare(TestCase.java:127)
        //     at junit.framework.TestResult$1.protect(TestResult.java:106)
        //     at junit.framework.TestResult.runProtected(TestResult.java:124)
        //     at junit.framework.TestResult.run(TestResult.java:109)
        //     at junit.framework.TestCase.run(TestCase.java:118)
        //     at junit.framework.TestSuite.runTest(TestSuite.java:208)
        //     at junit.framework.TestSuite.run(TestSuite.java:203)
        //     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:392)
        //     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:276)
        //     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:167)

        // 結果が異なっているとこのように例外が発生します。
        // 最初の一文の「expected:<1> but was:<-1>」は、
        // 「期待した値は1だったけど、実際には-1だった」という意味です。
    }

    /**
    *   関係ないメソッド。"test"から始まらない
    *   メソッドは関係ありません。
    */
    public void output()
    {
        System.out.println( "output()" );
    }
}
// Sample.java
public class Sample
{
    /**
    *   テスト対象のメソッド。
    */
    public int plus( int iL, int iR )
    {
        return iL + iR;
    }

    /**
    *   テスト対象のメソッド(バグってる版)。
    */
    public int minus( int iL, int iR )
    {
        return iR - iL;
        // 間違えて逆に引いています。
    }
}


// Tester.java
import junit.framework.Test;
import junit.framework.TestSuite;

/**
*   このクラスを使うために、junit.jarに
*   クラスパスを通してください。junit.jarは
*   Junitをダウンロードしてくれば入っているはずです。
*/

/**
*   各テストメソッドを呼び出すクラス。
*
*   コンパイルを通すために、junit.jarにクラスパスを
*   通してください。junit.jarはEclipseに付いていますが、
*   最新版をダウンロードした方がいいでしょう。
*
*   Eclipseで実行する場合、メニューの【実行】-【デバッグ】の
*   【起動構成】から【JUnit】を選び【新規】で新規作成し、
*   【テスト・クラス】でこのクラスを指定してください。
*
*/
public class Tester
{
    /**
    *   JUnitから呼ばれるメソッド。
    *   main()メソッドみたいなものです。
    */
    public static Test suite()
    {
        // テストを登録するためのTestSuiteを作ります。
        TestSuite suite = new TestSuite();

        // テストケースを追加します。
        // このクラスのtestメソッドが呼ばれます。
        suite.addTestSuite( SampleTest.class );

        // TestSuite を返します。
        // この中に登録したテストクラスが実行されます。
        return suite;
    }
}


// SampleTest.java
import junit.framework.TestCase;

/**
*   Sampleクラスのテストクラスです。
*   SampleクラスのテストクラスなのでSampleTestです。
*   TestCaseクラスのサブクラスにします。
*/
public class SampleTest extends TestCase
{
    /**
    *   コンストラクタ。
    */
    public SampleTest()
    {
        // クラス名をセットします。
        super( SampleTest.class.toString() );
    }

    /**
    *   Sample#plus()メソッドをテストします。
    *   この、頭にtestが付いているメソッドが
    *   テストメソッドとみなされて自動的に
    *   呼び出されます。
    */
    public void testPlus() 
    {
        Sample sample = new Sample();
        int result = sample.plus( 2, 1 );
        // assertEquals()メソッドで結果をチェックします。
        // 第1引数に「予想される結果」を、
        // 第2引数にテスト対象の変数を渡します。
        assertEquals( 3, result );
        // 結果が一致しているので何も起きません。

        // assertEquals()メソッドの他に、assertFalse()や
        // assertNull()といったメソッドでチェックすることも
        // できます。
    }

    public void testMinus() 
    {
        Sample sample = new Sample();
        assertEquals( 1, sample.minus( 2, 1 ) );
        // junit.framework.AssertionFailedError: expected:<1> but was:<-1>
        //     at junit.framework.Assert.fail(Assert.java:47)
        //     at junit.framework.Assert.failNotEquals(Assert.java:282)
        //     at junit.framework.Assert.assertEquals(Assert.java:64)
        //     at junit.framework.Assert.assertEquals(Assert.java:201)
        //     at junit.framework.Assert.assertEquals(Assert.java:207)
        //     at SampleTest.testMinus(SampleTest.java:26)
        //     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        //     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        //     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        //     at java.lang.reflect.Method.invoke(Method.java:324)
        //     at junit.framework.TestCase.runTest(TestCase.java:154)
        //     at junit.framework.TestCase.runBare(TestCase.java:127)
        //     at junit.framework.TestResult$1.protect(TestResult.java:106)
        //     at junit.framework.TestResult.runProtected(TestResult.java:124)
        //     at junit.framework.TestResult.run(TestResult.java:109)
        //     at junit.framework.TestCase.run(TestCase.java:118)
        //     at junit.framework.TestSuite.runTest(TestSuite.java:208)
        //     at junit.framework.TestSuite.run(TestSuite.java:203)
        //     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:392)
        //     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:276)
        //     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:167)

        // 結果が異なっているとこのように例外が発生します。
        // 最初の一文の「expected:<1> but was:<-1>」は、
        // 「期待した値は1だったけど、実際には-1だった」という意味です。
    }

    /**
    *   関係ないメソッド。"test"から始まらない
    *   メソッドは関係ありません。
    */
    public void output()
    {
        System.out.println( "output()" );
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/05/18
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。