2012-05-06 69 views
0

現在我一直在維護第二個沙箱項目,在這個項目中測試概念並通過障礙工作。但是這不是非常有效,因爲我最終需要複製大量的代碼,並且無法爲我的遊戲維護一組持久的迴歸測試。有了PlayN框架,我如何在我的項目中包含單元測試?

我做我的項目中有單元測試的文件夾,但它們依賴於特定平臺的實現是不可用的核心分支發展地方發生是不可能的框架本身的測試組件。

我已經找到PlayN框架的set of tests。是否有可能利用這些來測試自己的項目?一個項目中是否可以包含兩個Game類?

我看到這個問題,有人提出here,但它從來沒有真正得到一個滿意的答覆。

回答

4

你不能很容易地編寫那些對抗PlayN支持不同的後端運行單元測試。很明顯,在Android手機或iOS設備上自動運行單元測試將是一項相當大的挑戰。但是,您可以很容易地編寫針對Java後端運行的單元測試。

我通常構造我的項目,以便我的核心子模塊具有對play n-javatest依賴關係,然後使用playn-java後端運行我的單元測試。我發現這種方法工作得相當好,儘管我通常不會直接測試那些與PlayN直接交互的東西,因爲很難單元測試可視代碼。我單元測試的事情很少發生PlayN呼叫。

您還可以對HTML5後端單元測試,但它是reaaaaally緩慢。看看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)運行單元測試構建服務器,你需要確保構建服務器有一個無頭X Window安裝與Mesa GL庫一起安裝。

+0

謝謝。我會試一試。這是我特別想在我的單元測試中使用的JSON類。 – klenwell

相關問題