0

現在、私は2番目のサンドボックスプロジェクトを維持しており、そこで概念をテストし、障害を乗り越えています。しかし、これはあまり効率的ではありません。多くのコードを複製する必要があり、ゲームの回帰テストの永続的なセットを維持することができないためです。

プロジェクト内に単体テストのフォルダーがありますが、フレームワーク自体のコンポーネントは、開発が行われるコアブランチでは利用できないプラットフォーム固有の実装に依存しているため、テストすることはできません。

PlayNフレームワークの一連のテストを見つけました。これらを活用して自分のプロジェクトをテストすることは可能ですか?1つのプロジェクトに2つのゲームクラスを含めることは可能ですか?

この質問はここで提起されたようですが、満足のいく回答は得られませんでした。

4

1 に答える 1

4

PlayN がサポートするさまざまなバックエンドに対して実行される単体テストを簡単に作成することはできません。明らかに、Android フォンまたは iOS デバイスで単体テストを自動的に実行するのは非常に困難です。ただし、Java バックエンドに対して実行する単体テストは非常に簡単に作成できます。

私は通常、コア サブモジュールがtest依存するようにプロジェクトを構成し、バックエンドplay n-javaを使用して単体テストを実行します。playn-javaビジュアル コードの単体テストが難しいため、通常、PlayN と直接やり取りするものはあまりテストしませんが、これはかなりうまく機能することがわかりました。私が単体テストするものは、ほとんど PlayN を呼び出しません。

HTML5 バックエンドに対して単体テストを行うこともできますが、非常に遅いです。HTMLUnitを見てください。

[編集: この質問に繰り返し答えているので、Java バックエンドに対して単体テストを実行するようにプロジェクトを構成する方法について、ここに説明を追加します]

playn-java をcore/pom.xmlテスト依存関係として追加します。

 <dependency>
   <groupId>com.googlecode.playn</groupId>
   <artifactId>playn-java</artifactId>
   <version>${playn.version}</version>
   <scope>test</scope>
 </dependency>

これをあなたにも追加してくださいcore/pom.xml

<build>
  <plugins>
    <plugin>
      <groupId>com.googlecode.mavennatives</groupId>
      <artifactId>maven-nativedependencies-plugin</artifactId>
      <version>0.0.6</version>
      <executions>
        <execution>
          <id>unpacknatives</id>
          <phase>generate-resources</phase>
          <goals> <goal>copy</goal> </goals>
        </execution>
      </executions>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.12</version>
      <configuration>
        <argLine>-Djava.library.path=${basedir}/target/natives</argLine>
      </configuration>
    </plugin>
  </plugins>
</build>

これにより、単体テストの実行時に LWJGL が適切に設定されます。

次に、これを単体テストに追加します。

 static {
     JavaPlatform.register();
 }

PlayN.foo()これで、単体テストでサービスにアクセスできるようになり、サービスも機能します。

次のように、Maven からテストをコンパイルして実行します。

mvn test

(Unix) ビルド サーバーで単体テストを実行する必要がある場合は、ビルド サーバーに Mesa GL ライブラリと共にヘッドレス X Windows インストールがインストールされていることを確認する必要があります。

于 2012-05-08T04:14:17.053 に答える