Android Robolectric:窗口创建失败
我试图使用robolectric来避免每次测试都启动模拟器。 我按照这个(非常好的)教程设置了所有内容: 不幸的是,我得到了一个错误:Android Robolectric:窗口创建失败,android,eclipse,testing,robolectric,Android,Eclipse,Testing,Robolectric,我试图使用robolectric来避免每次测试都启动模拟器。 我按照这个(非常好的)教程设置了所有内容: 不幸的是,我得到了一个错误: java.lang.RuntimeException: Window creation failed! at org.robolectric.shadows.ShadowActivity.getWindow(ShadowActivity.java:329) at org.robolectric.shadows.ShadowActivity.findViewByI
java.lang.RuntimeException: Window creation failed!
at org.robolectric.shadows.ShadowActivity.getWindow(ShadowActivity.java:329)
at org.robolectric.shadows.ShadowActivity.findViewById(ShadowActivity.java:275)
at android.app.Activity.findViewById(Activity.java)
at MainActivityTest.shouldNotBeNull(MainActivityTest.java:32)
(...)
这是我的代码:
import static org.junit.Assert.assertTrue;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import static org.fest.assertions.api.ANDROID.assertThat;
import android.widget.Button;
import android.widget.EditText;
import com.abs.databaseprototype.MainActivity;
import com.abs.databaseprototype.R;
@RunWith(RobolectricTestRunner.class)
public class MainActivityTest {
private MainActivity activity;
@Before
public void setup() {
activity = Robolectric.buildActivity(MainActivity.class).get();
}
@Test
public void shouldNotBeNull() {
assertThat(activity).isNotNull();
Button btnPatients = (Button) activity.findViewById(R.id.btnPatients);
assertThat(btnPatients).isNotNull();
//
// Button btnSpecialties = (Button) activity.findViewById(R.id.btnSpecialites);
// assertThat(btnSpecialties).isNotNull();
//
// Button btnTreat = (Button) activity.findViewById(R.id.btnTreat);
// assertThat(btnTreat).isNotNull();
//
// EditText editText = (EditText) activity.findViewById(R.id.edit_query);
// assertThat(editText).isNotNull();
}
@Test
public void shouldFail() {
assertTrue(false);
}
}
有什么想法吗?好的,我找到了解决办法。
教程中有个错误。您必须首先创建活动,因此请编写
activity=Robolectric.buildActivity(LoginActivity.class).create().get();
而不是
activity=Robolectric.buildActivity(LoginActivity.class.get();
就这样。
我今天学到的:总是检查文档。
:-)您解决了这个问题吗?如果是,请选择一个答案。