我正在构建一个 android 应用程序,我想使用 JUnit 测试而不是 Android JUnit 测试进行单元测试(因为使用模拟器运行 Android 测试需要很长时间)。
环境:
- 蚀
- 安卓项目
- Android测试项目(目标包=android项目包)
- JUnit4 / Mockito
- 使用 JUnit 运行单元测试(故意不是Android JUnit)
只要我测试自己编写的不依赖于 Android 类的类,一切顺利。Log.i()
但是,当我想为包含例如语句或引用a 的类编写测试时TextView
,会遇到以下错误:
java.lang.NoClassDefFoundError: android/text/TextWatcher at java.lang.ClassLoader.defineClass1(Native Method)
Android 应用程序清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cleancode.lifesaver"
android:versionCode="1"
android:versionName="1.0" >
Android 测试项目清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cleancode.lifesaver.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.cleancode.lifesaver" />
测试类:
import android.widget.TextView;
public class CapCharacterTextValidator extends TextValidator {
public CapCharacterTextValidator(TextView textView) {
super(textView);
}
@Override
public void validate(TextView textView, String text) {
}
}
测试类:
import org.junit.Test;
import com.cleancode.lifesaver.utils.CapCharacterTextValidator;
public class CapCharactersTextValidatorTests {
@Test
public void validateCharacters() {
new CapCharacterTextValidator(null);
}
}
我尝试在 Android 应用程序和 Android 测试应用程序或两者之一的导出库中添加 android 库,但仍然没有给我一个绿色测试。无论我尝试什么,我都会遇到这个NoClassDefFoundError
。
我阅读了大部分 android 文档,但他们似乎真的很喜欢在模拟器上使用 Android JUnit 的方法(对我来说太慢了)。
以下问答帖子也没有进一步帮助我:
- Android JUnit 测试 ClassNotFoundException
- 在 Netbeans 中运行 JUnit 测试时出现 java.lang.NoClassDefFoundError
- Eclipse + Android + JUnit 测试参考 android.os class = NoClassDefFoundError
任何帮助将不胜感激!