Eig*_*Boy 8 java testing groovy android robolectric
我创建了一个可以在Android环境中使用的库.目前它包含Plain Old Groovy Objects,没有Android依赖项.对那些POGO的测试运行没有问题.
为了扩展库的功能,我创建了继承Android类或依赖它们的类,我也想测试它们.当然,测试应该是库的一部分,不应该作为包含库的Android应用程序项目的一部分来实现.
我知道一个应用程序可以在Robolectric的帮助下进行测试,它运行得很好,但我认为没有可能在没有整个Android应用程序的情况下使用它.
有没有办法测试具有Android依赖项和Robolectric的库?
我使用的是Android Studio 1.2.
小智 1
我认为Robolectric对您来说是一个不错的选择。例如,如果您编写了一个继承自 DialogFragment 的类,您可以查看它的行为是否正确:
@RunWith(RobolectricTestRunner.class)
public class ProgressDialogFragmentTest {
private static final String MESSAGE_KEY = "KEY_PROGRESS_MESSAGE";
private static final String TEST_MESSAGE = "test message";
@Test
public void argumentsContainExpectedKey() {
//given
ProgressDialogFragment fragment = ProgressDialogFragment.newInstance(TEST_MESSAGE);
//when
boolean containsExpectedKey = fragment.getArguments().containsKey(MESSAGE_KEY);
//then
assertTrue(containsExpectedKey);
}
@Test
public void argumentsContainsValidMessage() {
//given
ProgressDialogFragment fragment = ProgressDialogFragment.newInstance(TEST_MESSAGE);
//when
String actualMessage = fragment.getArguments().getString(MESSAGE_KEY);
//then
assertEquals(TEST_MESSAGE, actualMessage);
}
@Test
public void createdDialogIsProgressDialog() {
//given
ProgressDialogFragment fragment = ProgressDialogFragment.newInstance(TEST_MESSAGE);
FragmentTestUtil.startFragment(fragment);
//when
Dialog dialog = fragment.getDialog();
//then
assertTrue(dialog instanceof ProgressDialog);
}
@Test
public void dialogIsHiddenBeforeRunShowMethod() {
//given
ProgressDialogFragment fragment = ProgressDialogFragment.newInstance(TEST_MESSAGE);
FragmentTestUtil.startFragment(fragment);
//when
ProgressDialog dialog = (ProgressDialog) fragment.onCreateDialog(fragment.getArguments());
boolean showing = dialog.isShowing();
//then
assertFalse(showing);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1566 次 |
| 最近记录: |