【问题标题】:Run JUnit Tests of Java SE library on Android emulator or device在 Android 模拟器或设备上运行 Java SE 库的 JUnit 测试
【发布时间】:2014-02-11 05:08:29
【问题描述】:

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

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

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

有没有办法做到这一点?

【问题讨论】:

    标签: java android maven junit


    【解决方案1】:

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

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

    【讨论】:

    • 听起来不错!您对如何为 Wrapper 项目提供 test.jar 有什么建议吗?我找到了mvn jar:test-jar。有标准方法吗?
    • 对不起,我以前没有这样做过。我不知道最佳实践方式。
    【解决方案2】:

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

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

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

    希望有人能找到更好的解决方案,但至少可行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-16
      • 1970-01-01
      • 2020-06-12
      • 2012-07-05
      • 2015-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多