我创建了一个新的Android测试项目。我从https://code.google.com/p/powermock/downloads/list下载了powermock-mockito-junit-1-1.5.zip文件。我将所有库添加到测试项目的libs
文件夹中。测试类是一个非常简单的对象:
package com.test.test;
import org.junit.runner.RunWith;
import org.powermock.modules.junit4.PowerMockRunner;
import android.util.Log;
@RunWith(PowerMockRunner.class)
public class TestTestAndroid {
public void testRuns() {
Log.e("test", "Test case is called");
}
}
然后,我尝试从Eclipse运行项目或从命令行制作项目。结果我得到了相同的错误:
Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lorg/hamcrest/Description;
事实证明,junit-4.8.2.jar
和mockito-all-1.9.5.jar
都定义了org.hamcrest.Description
。显然,我必须包含Mockito jar - 我需要Mockito。 Android提供了一个不同版本的JUnit,但它是一个旧版本,不包括@RunWith
注释。
有人能回答如何在Android项目中使用PowerMock和Mockito,而不会出现冲突的org.hamcrest.Description
问题吗?
HttpConstants.getUrl()
是一个静态方法,那么编写另一个方法:String getUrl() { return HttpConstants.getUrl(); }
,然后你就可以对这个方法进行存根处理了。 - Matt Quigley