不能在我的android项目上模拟对象

时间:2014-10-17 11:20:43

标签: java android unit-testing gradle mockito

我无法在我的测试用例中模拟任何对象。所以我一定是做错了。我可以不用运行我的测试用例,而且运行正常。但是一旦我试图嘲笑一个物体。当我尝试运行测试用例时,我收到以下错误。

    java.lang.ExceptionInInitializerError
    at org.mockito.internal.creation.jmock.ClassImposterizer.createProxyClass
(ClassImposterizer.java:85)

我在 Android Studio 上运行我的android项目。这是我的gradle文件的样子

apply plugin: 'android'
     

依赖{       编译fileTree(dir:' libs',include:' * .jar')       编译项目(':google-play-services_lib')       编译项目(':facebook-sdk_lib')       编译' de.greenrobot:greendao:1.3.7'       编译" org.mockito:mockito-core:1.9.5" }

     

android {

packagingOptions {
    exclude 'META-INF/ASL2.0'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
}

compileSdkVersion 19
buildToolsVersion "19.1.0"

lintOptions {
    abortOnError false
}

sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        java {
            srcDir 'src'
            srcDir 'src-gen'
            srcDir 'tests'
        }
        resources {
            srcDir 'src'
            srcDir 'src-gen'
        }
        aidl.srcDirs = ['src','src-gen']
        renderscript.srcDirs = ['src','src-gen']
        res.srcDirs = ['res']
        assets.srcDirs = ['assets']
    }
    androidTest.setRoot('tests')

    debug.setRoot('build-types/debug')
    release.setRoot('build-types/release')
} }

我不知道它是否存在大问题。 这里还有我的一个测试类

    public class ValueFormatTest extends AndroidTestCase
{

  public ValueFormatTest()
  {
    /* Do Nothing! */
  }

  /* (non-Javadoc)
   * @see junit.framework.TestCase#setUp()
   */
  protected void setUp() throws Exception
  {
    super.setUp();
  }

  /* (non-Javadoc)
   * @see junit.framework.TestCase#tearDown()
   */
  protected void tearDown() throws Exception
  {
    super.tearDown();
  }

  public final void testFormaterDateTime()
  {
    Mockito.mock(BaseConnection.class);

    Assert.assertEquals("",ValueFormat.formatDateTime(getContext(),2,null));
    Assert.assertEquals("",ValueFormat.formatDateTime(getContext(),1,null));
    Assert.assertEquals("",ValueFormat.formatDateTime(getContext(), -1, null));
  }
}

最后,这可以帮助理解我的类层次结构的样子。如果这甚至有帮助

ProjectFolder
-.idea
-build
-DaoGenerator
-Facebook
-google-play-services
-ModuleCar
   |-libs
   |-build
   |-src
   |-src-gen
   |-tests
      |-lib
      |-res
      |-src.com.car.test

欢迎任何帮助我找到解决此问题的正确途径的帮助。非常感谢

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。在gradle.build文件中。我改变了我进口Mockito的方式。 问题是它无法找到dexmaker。

    compile("org.mockito:mockito-core:1.9.5") 
    {
        exclude group: 'org.hamcrest'
    }
    compile 'com.google.dexmaker:dexmaker:1.1'
    compile 'com.google.dexmaker:dexmaker-mockito:1.1'