我对android有点陌生,几个小时来我一直在为如何将hamcrest matchers包含在我的测试项目中而苦苦挣扎。代码看起来应该在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上?

最佳答案

假设您使用的是当前的r17工具,那么…
我试过将hamcrest-all-1.2.jar添加为库和外部jar。两种方法的结果相同,代码在IDE中看起来很好,但在运行时无法加载类。
步骤1:撤销所有这些。
步骤2:在项目的根目录中创建一个libs/目录。
步骤3:把罐子放进libs/里。
你就完了。这以前只是命令行构建的配方,但现在也是基于eclipse的构建的配方。

关于android - 如何在Android上的jUnit中使用Hamcrest匹配器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10095096/

10-09 05:49