Robolectric Unit使用AndroidAnnotations进行测试

时间:2015-04-12 20:26:37

标签: android unit-testing robolectric

我在使用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(); 

 }
}

2 个答案:

答案 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");

}
}