JUnit テストの変換

適切に設計されたソフトウェア プロジェクトには、通常、それを検証するための単体テストが多数含まれます。Java プロジェクトの場合、JUnit が最も一般的な単体テスト フレームワークです。J2ObjC は単体テストの翻訳をサポートしているため、OS X でバイナリとして実行できます。これにより、変換によって変換されたクラスのセマンティクス(動作)が変更されないことと、変換されたコードが Objective-C コードとして実行されることを検証します。

テストの翻訳

クラスパスに junit.jar を指定して j2objc を実行します。この jar ファイルのコピーが、lib/j2objc_junit.jar という名前の j2objc ディストリビューションに含まれています。

# Example: J2ObjC bundle unzipped into a ~/tools directory
export J2OBJC_HOME=~/tools/j2objc
${J2OBJC_HOME}/j2objc -classpath ${J2OBJC_HOME}/lib/j2objc_junit.jar MyUnitTest.java

テストのリンク設定

コンパイラの -l フラグを使用して、J2ObjC ディストリビューションの lib/ ディレクトリにある libjunit.a ライブラリとリンクします。

${J2OBJC_HOME}/j2objcc -ObjC -o mytest -ljunit MyUnitTest.m

テストの実行

1 つ以上のテストまたはテストスイートの名前でテスト実行可能ファイルを実行します(JUnit テストが Java で実行されるなど)。名前は、(パッケージを含む)完全修飾された Java 名、または同等の変換された名前のいずれかです。たとえば、com.company.MyUnitTest テストクラスは ComCompanyMyUnitTest として指定することもできます。

./mytest org.junit.runner.JUnitCore com.company.MyUnitTest  # or com.company.Test2

org.junit.runner.JUnitCore は JUnit のテストランナーの一つであり、JUnit3 テストまたは JUnit4 テストのいずれかを実行できます。ただし、他の JUnit ランナーも使用できます。

テストの作成

make を使用して大量の単体テストセットをビルドして実行する方法の好例は、プロジェクトのソースコードの j2objc/jre_emul/tests.mk です。