我在使用Robolectric进行AndroidAnnotations单元测试时遇到了问题。
我的测试正在运行。但生成的类无法找到应包含在视图中的任何元素。 这是我的测试课。在调试时我可以看到“afterSetContentView_”无法找到ViewById。
@RunWith(RobolectricTestRunner.class)
public class MainActivityTest {
private MainActivity activity;
private EditText mTextView;
private Button btnLogin;
@Before
public void setup() {
activity = Robolectric.buildActivity(MainActivity.class).create().get();
mTextView = (EditText) activity.findViewById(R.id.etUserName);
}
}
这是我的活动:
@EActivity(R.layout.login)
public class MainActivity extends Activity {
@ViewById(R.id.etUserName)
EditText etUerName;
..........
}
我在这里更新了我的测试类
@RunWith(RobolectricTestRunner.class)
@Config(manifest = "./src/main/AndroidManifest.xml", emulateSdk = 18)
public class LoginActivityTest {
@Before
public void setup() {
Robolectric.buildActivity(LoginActivity_.class).create().get();
}
}
答案 0 :(得分:1)
如果要使用robolectric启动活动,则应使用生成的类(MainActivity_)。
Robolectric.buildActivity(MainActivity_.class).create().get();
答案 1 :(得分:1)
最后我找到了解决方案。我将下面的代码添加到我的测试类中,现在它工作正常。谢谢!
@Config(manifest = "app/src/main/AndroidManifest.xml", emulateSdk = 18, reportSdk = 18)
public class LoginActivityTest {
@Before
public void setup() {
Robolectric.buildActivity(LoginActivity_.class).create().get();
usrName = (EditText) activity.findViewById(R.id.etUserName);
password = (EditText) activity.findViewById(R.id.etPassword);
usrName.setText("su_test@volume.co.uk");
password.setText("volum3");
}
}