2014-01-21 65 views
3

我有一个简单的库,它在Java SE上编译和运行,并使用Maven构建。测试类是JUnit测试用例(目前是4.x,降级到3.x没有问题)。在Android模拟器或设备上运行Java SE库的JUnit测试

该库可以在Android中使用,但对android.*没有依赖关系。 由于JDK(Java SE和Android/Harmony)存在一些细微差异,因此在模拟器或Android设备上运行JUnit测试是绝对必要的。

我不想将测试用例复制到Hello-Testing Android项目,但重用现有的类。

有没有办法做到这一点?

回答

1

要在android模拟器上执行测试,您需要创建一个测试项目(这个只能使用JUnit 3),这取决于一个普通的Android项目。

我建议你在包含对库的所有测试调用的库测试中添加一个测试套装。创建一个简单的Hello Word Android项目。为此项目创建一个Android测试项目。然后,您可以从Android测试项目中调用新创建的测试套件,而无需复制任何测试用例。你所做的只是建立一些包装项目。

+0

听起来不错!你有建议如何为Wrapper项目提供test.jar吗?我发现'mvn jar:test-jar'。有没有标准的方法? – hgoebl

+0

对不起,我以前没有这样做过。我不知道最佳实践方法。 – Simulant

0

也许这不是最佳的解决方案,但我设法测试运行在Android(模拟器或真实设备)的库。你可以在DavidWebb找到它。

public class DavidWebbAndroidTests extends TestSuite { 
    public static Test suite() { 
     return new TestSuiteBuilder(DavidWebbAndroidTests.class) 
      .includeAllPackagesUnderHere() 
      .build(); 
    } 
} 

需要注意的是,我必须扩展所有测试,以便它们出现在Android上。

希望有人会找到一个更好的解决方案,但至少它的作品。

相关问题