我正在尝试为我的应用程序添加一些Roboelectric单元测试。使用Roboelectric 3.0,我希望能够测试我的活动PinActivity以及其中的片段。
import android.support.v7.app.AppCompatActivity;
import android.app.Fragment;
PinActivity extends AppCompatActivity {
Gradle文件包含:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
testCompile "org.robolectric:robolectric:3.0"
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
}
PinActivityTest包含:(编辑添加@Config未修复)
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import static org.junit.Assert.*;
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class PinActivityTest {
@Test
public void onCreate_shouldInflateLayout() throws Exception {
PinActivity activity = Robolectric.buildActivity(PinActivity.class).create().get();
assertNotNull(activity);
}
目前收到以下警告:WARNING: No manifest file found at .\AndroidManifest.xml.Falling back to the Android OS resources only. To remove this warning, annotate your test class with @Config(manifest=Config.NONE).
以及java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
为什么无法找到我的AndroidManifest文件? 有人知道如何解决这个问题或者有更多类似示例的Roboelectric教程吗?
@RunWith(RobolectricTestRunner.class)
而不是你建议的@RunWith(RobolectricGradleTestRunner.class)
。更改后问题得到解决。谢谢。 - J0B