我正在尝试在我们当前的项目中使用Robolectric测试,并且并不顺利。我希望能够在Android Studio 1.1.0+内运行这些测试。 这是我的项目结构:
这是我的测试代码:
无论我如何更改清单文件的路径以使框架找到测试,它都无法找到 - 我要么收到“WARNING:No manifest file found at ./AndroidManifest.xml.Falling back to the Android OS resources only.” 的消息,要么是“API Level XX is not supported - Sorry!” 的消息。最终,我认为这就是测试运行时出现以下错误的原因:
我已经打开了实验性选项,并配置了正确的Gradle插件(单位测试正常工作),但我不确定缺少什么来启动仪器测试。
应用程序级别的构建文件:
顶层构建文件:
![enter image description here](https://istack.dev59.com/r1MxO.webp)
import android.widget.Button;
import com.mycompany.android.app.R;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import static org.junit.Assert.assertNotNull;
@Config(manifest = "AndroidManifest.xml")
@RunWith(RobolectricTestRunner.class)
public class SplashActivityTest {
private SplashActivity splashActivity;
@Before
public void setup() {
splashActivity = Robolectric.buildActivity(SplashActivity.class).create().start().resume().get();
}
@Test
public void shouldNotBeNull() {
Button signUpButton = (Button) splashActivity.findViewById(R.id.sign_up_button);
assertNotNull(signUpButton);
Button loginButton = (Button) splashActivity.findViewById(R.id.login_button);
assertNotNull(loginButton);
}
}
无论我如何更改清单文件的路径以使框架找到测试,它都无法找到 - 我要么收到“WARNING:No manifest file found at ./AndroidManifest.xml.Falling back to the Android OS resources only.” 的消息,要么是“API Level XX is not supported - Sorry!” 的消息。最终,我认为这就是测试运行时出现以下错误的原因:
android.content.res.Resources$NotFoundException: unknown resource 2130903074
我已经打开了实验性选项,并配置了正确的Gradle插件(单位测试正常工作),但我不确定缺少什么来启动仪器测试。
应用程序级别的构建文件:
apply plugin: 'org.robolectric'
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.9.5'
testCompile 'org.robolectric:robolectric:2.4'
testCompile 'org.hamcrest:hamcrest-core:1.1'
testCompile 'org.hamcrest:hamcrest-library:1.1'
testCompile 'org.hamcrest:hamcrest-integration:1.1'
顶层构建文件:
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
classpath 'org.robolectric:robolectric-gradle-plugin:1.0.0'
}