如何在Android上使用带有jUnit的Hamcrest匹配器

时间:2012-04-10 19:23:39

标签: android unit-testing junit hamcrest

我对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?

1 个答案:

答案 0 :(得分:5)

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

  

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

步骤1:撤消所有这些。

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

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

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