【发布时间】:2012-08-14 13:12:25
【问题描述】:
在我们的应用程序上使用 RoboGuice 2.0 时,我们在 Eclipse 中运行集成单元测试时遇到问题。
当我们尝试在模拟器上运行单元测试类(作为 Android JUnit 测试)时,会出现以下异常,因此测试甚至无法运行:
junit.framework.AssertionFailedError: Exception in constructor: testAddNote (java.lang.NoClassDefFoundError: br.org.certi.android.pgpsip.client.measure.activity.MeasureActivity
at br.org.certi.android.pgpsip.client.test.MeasureActivityTest.<init>(MeasureActivityTest.java:14)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
at junit.runner.BaseTestRunner.getTest(BaseTestRunner.java:103)
at android.test.AndroidTestRunner.getTest(AndroidTestRunner.java:127)
at android.test.AndroidTestRunner.setTestClassName(AndroidTestRunner.java:55)
at android.test.suitebuilder.TestSuiteBuilder.addTestClassByName(TestSuiteBuilder.java:81)
at android.test.InstrumentationTestRunner.parseTestClass(InstrumentationTestRunner.java:418)
at android.test.InstrumentationTestRunner.parseTestClasses(InstrumentationTestRunner.java:399)
at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:364)
...
这里是测试类的相关部分,希望够了:
public class MeasureActivityTest extends ActivityInstrumentationTestCase2<MeasureActivity> {
public MeasureActivityTest() {
super(MeasureActivity.class);
}
使用 maven (mvn clean install) 测试运行完美。
一个重要的事情是,如果活动类不依赖于 RoboGuice,它也可以在 eclipse 上正常工作。
pom.xml的相关部分:
<dependency>
<groupId>org.roboguice</groupId>
<artifactId>roboguice</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-multibindings</artifactId>
<version>3.0</version>
<exclusions>
<exclusion>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
</exclusion>
</exclusions>
</dependency>
我们注意到,当我们将 roboguice、guice 和注入依赖项复制到应用程序的 libs 文件夹(并将依赖项标记为 pom.xml 中提供的依赖项)时,测试在 eclipse 上运行良好。所以似乎是在ADT中运行的android单元测试无法识别maven依赖的问题。
看起来和这个问题很相似: Android/RoboGuice/Maven: ClassNotFoundException in Eclipse, but not from Maven command line,但是在运行单元测试而不是实际应用程序时。
任何关于如何解决此问题的想法将不胜感激。
【问题讨论】:
-
看看答案here有没有帮助。
-
Maven 依赖项已经导出。我试图导出所有内容,但这并没有改变。应用程序本身在模拟器上运行良好,只是集成单元测试因 NoClassDef 异常而失败。
标签: android eclipse maven integration-testing roboguice