Groovy-ユニットテスト
オブジェクト指向システムの基本単位はクラスです。したがって、単体テストはクラス内のテストで構成されます。採用されたアプローチは、テスト中のクラスのオブジェクトを作成し、それを使用して、選択されたメソッドが期待どおりに実行されることを確認することです。すべてのものをテストすることが常に実用的であるとは限らないため、すべての方法をテストできるわけではありません。ただし、重要で重要な方法については、単体テストを実施する必要があります。
JUnitは、Javaコードの自動単体テストで認められている業界標準であるオープンソースのテストフレームワークです。幸い、JUnitフレームワークはGroovyクラスのテストに簡単に使用できます。必要なのは、標準のGroovy環境の一部であるGroovyTestCaseクラスを拡張することだけです。Groovyテストケースクラスは、Junitテストケースに基づいています。
簡単なJUnitテストケースの作成
アプリケーションクラスファイルで次のクラスが定義されていると仮定します-
class Example {
static void main(String[] args) {
Student mst = new Student();
mst.name = "Joe";
mst.ID = 1;
println(mst.Display())
}
}
public class Student {
String name;
int ID;
String Display() {
return name +ID;
}
}
上記のプログラムの出力を以下に示します。
Joe1
そして今、Studentクラスのテストケースを書きたいとしましょう。典型的なテストケースは次のようになります。以下のコードについては、以下の点に注意する必要があります。
- テストケースクラスはGroovyTestCaseクラスを拡張します
- Displayメソッドが正しい文字列を返すようにするためにassertステートメントを使用しています。
class StudentTest extends GroovyTestCase {
void testDisplay() {
def stud = new Student(name : 'Joe', ID : '1')
def expected = 'Joe1'
assertToString(stud.Display(), expected)
}
}
Groovyテストスイート
通常、単体テストの数が増えると、すべてのテストケースを1つずつ実行し続けることが難しくなります。したがって、Groovyは、すべてのテストケースを1つの論理ユニットにカプセル化できるテストスイートを作成する機能を提供します。次のコードスニペットは、これを実現する方法を示しています。コードについては、次の点に注意してください。
GroovyTestSuiteは、すべてのテストケースを1つにカプセル化するために使用されます。
次の例では、2つのテストケースファイルがあり、1つは StudentTest もう1つは EmployeeTest これには、必要なすべてのテストが含まれています。
import groovy.util.GroovyTestSuite
import junit.framework.Test
import junit.textui.TestRunner
class AllTests {
static Test suite() {
def allTests = new GroovyTestSuite()
allTests.addTestSuite(StudentTest.class)
allTests.addTestSuite(EmployeeTest.class)
return allTests
}
}
TestRunner.run(AllTests.suite())