【问题标题】:How to use Hamcrest matchers with jUnit on Android如何在 Android 上将 Hamcrest 匹配器与 jUnit 一起使用
【发布时间】:2012-04-10 19:23:38
【问题描述】:

我对 Android 有点陌生,并且一直在努力研究如何在我的测试项目中包含 Hamcrest 匹配器。该代码看起来应该在 Eclipse 中运行,没有指示错误。但是当我运行测试时,Hamcrest 类没有加载。我得到“NoClassDefFoundError:org.hamcrest.Matchers”。

我在过去 3 个小时里浏览了论坛,发现有人以前遇到过这种情况,但没有运气。我一定是在做一些愚蠢的事情,因为 IDE 可以看到这些类,但运行时却没有。

这里是测试源:

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import org.hamcrest.Matcher;
import android.test.InstrumentationTestCase;

public class AppDescLoaderTest extends InstrumentationTestCase {

  public void testHamcrest() {
    assertThat(3, equalTo(3));
  }
}

我尝试将 hamcrest-all-1.2.jar 添加为库和外部 jar。两种方式的结果相同,代码在 IDE 中看起来不错,但无法在运行时加载类。

我的理论是 hamcrest.jar 不与 .apk 文件一起使用,这就是它的类没有被加载的原因。如果这是真的,我如何将它与 .apk 文件一起推送到 android?

【问题讨论】:

    标签: android unit-testing junit hamcrest


    【解决方案1】:

    假设您使用的是当前的 R17 工具,那么...

    我尝试将 hamcrest-all-1.2.jar 添加为库和外部 jar。两种方式的结果相同,代码在 IDE 中看起来不错,但无法在运行时加载类。

    第 1 步:撤消所有操作。

    第 2 步:在项目的根目录中创建一个 libs/ 目录。

    第 3 步:将您的 JAR 放入 libs/

    你就完成了。这曾经只是命令行构建的秘诀,但现在它也是基于 Eclipse 的构建的秘诀。

    【讨论】:

    • 那行得通。我还必须将 jar 引用作为外部 jar,否则 IDE 将看不到这些类。现在我得到“转换为 Dalvik 格式失败,错误 1”
    • @wannabetester:“我还必须将 jar 引用作为外部 jar,否则 IDE 将看不到这些类。” -- 这表明您不在 R17 版本的开发工具上。将您的引用作为外部 JAR 删除。右键单击项目,选择 Build Path > Configure Build Path,单击 Libraries 选项卡,单击 Add JARs... 按钮(注意,not Add External JARs...),找到JAR 在项目的libs/ 目录中,然后添加它。
    • 好的,我从构建路径中完全删除了 jar 文件,IDE 现在可以识别 .jar,因为它位于 /libs 文件夹中。显然,我之前需要做的就是刷新 IDE 以重新检查 /libs 目录。但是,我仍然收到 Dalvik 错误。我相信还有其他关于这个问题的帖子。如果您知道解决方案,请传递。同时我会试着找到它。
    • @wannabetester:检查您的 Eclipse 控制台,看看是否有更多关于失败的信息。或者,做一个命令行构建,我倾向于发现它使我更容易获得有关此类问题的信息。这个问题很可能是 Hamcrest 特有的,在您提出问题之前我没有听说过,并且会假设提到了猪纹章符号。
    • Hamcrest 是一个匹配器库,主要包含在 Junit 4.4 及更高版本中。然而,由于 Android 将我限制在 Junit 3.x,我正在尝试添加 Hamcrest 功能以提高我的测试的可读性。无论如何,那里有一些关于 Dalvik 问题的帖子,所以我会看看我是否可以根据其他帖子解决问题。感谢您为我指明了如何将库添加到我的构建中的正确方向。我不知道 /libs 目录。
    猜你喜欢
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多