2015-04-12 71 views
1

我在使用Robolectric進行AndroidAnnotations單元測試時遇到問題。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(); 

} 
} 

回答

1

當你要開始一個活動,您應該使用生成的類(MainActivity_)與robolectric。

Robolectric.buildActivity(MainActivity_.class).create().get(); 
+0

感謝您的回覆。我試過這個。但是我收到了錯誤信息。任何建議請java.lang.reflect.InvocationTargetException –

+0

沒有更多的信息,我沒有任何建議。 Stacktrace和代碼示例將幫助 – nenick

+0

我無法找到任何解決方案。當我調用LoginActivity_時,我得到了InvocationTargetException。請參閱下面的測試課。謝謝! @RunWith(RobolectricTestRunner.class) @Config(清單= 「./src/main/AndroidManifest.xml」,emulateSdk = 18) 公共類LoginActivityTest { @Before 公共無效設定(){ Robolectric。 buildActivity(LoginActivity_.class).create()得到()。 } } –

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("[email protected]"); 
    password.setText("volum3"); 

} 
} 
+0

中描述的BuildConfig,對不起,但是使用'「app/src/main/AndroidManifest.xml」'稍後運行或早在其他一些問題。你沒有回答我最後一個問題,但你應該真的關注http://robolectric.org/getting-started/ – nenick

相關問題