Android 单元测试 - ClassdefNotFound

问题描述 投票:0回答:2

我正在尝试为 Android 编写一个单元测试,但是在我的一个测试方法中执行以下非常简单的代码时出现“NoClassdefFound”错误:

public void testAAA(){
    testAPI1 test = new testAPI1();
    test.makeApiCall1();
}

类 testAPI1 看起来像这样:

  public class testAPI1 implements SomeInterface{
   public void makeApiCall1(){
      //do something
  }

}

SomeInterface 只是一些接口。 然而,当我删除“SomeInterface”时,一切正常。

清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mamlambo.article.simplecalc.test" android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon"
    android:label="@string/app_name">
    <uses-library android:name="android.test.runner" />
</application>

<uses-sdk android:minSdkVersion="7" />
<instrumentation android:targetPackage="com.mamlambo.article.simplecalc"
    android:name="android.test.InstrumentationTestRunner" 
    android:label="Simple Calc Test"/>
 </manifest> 

到底是什么问题?

android unit-testing junit
2个回答
0
投票

问题是没有找到我实现的接口。该接口位于我引用的另一个项目中,该项目显然没有正确引用。 我所做的就是将该项目导出到一个 jar 文件中(没有 AndroidManifest!),然后将其导入到我的测试项目中,从那时起一切工作正常。


0
投票

我解决了这个问题;它与 Android Studio 最新版本有关。所有测试用例都不起作用,解决方案是使用正确的值更新

/.idea/runConfigurations.xml

我找到了解决方案这里

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="RunConfigurationProducerService">
    <option name="ignoredProducers">
      <set>
        <option value="com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer" />
        <option value="com.intellij.execution.junit.AllInPackageConfigurationProducer" />
        <option value="com.intellij.execution.junit.PatternConfigurationProducer" />
        <option value="com.intellij.execution.junit.TestInClassConfigurationProducer" />
        <option value="com.intellij.execution.junit.UniqueIdConfigurationProducer" />
        <option value="com.intellij.execution.junit.testDiscovery.JUnitTestDiscoveryConfigurationProducer" />
        <option value="org.jetbrains.kotlin.idea.junit.KotlinJUnitRunConfigurationProducer" />
        <option value="org.jetbrains.kotlin.idea.junit.KotlinPatternConfigurationProducer" />
      </set>
    </option>
  </component>
</project>
© www.soinside.com 2019 - 2024. All rights reserved.