gpt4 book ai didi

java - 使用 Robolectric 测试 Android 库

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:01:37 24 4
gpt4 key购买 nike

我创建了一个可以在 Android 环境中使用的库。目前它包含 Plain Old Groovy Objects,没有 Android 依赖项。对这些 POGO 的测试运行没有问题。

为了扩展库的功能,我创建了继承自 Android 类或依赖于它们的类,我也想测试它们。当然,测试应该是库的一部分,而不应该作为包含库的 Android 应用程序项目的一部分来实现。

我知道可以在 Robolectric 的帮助下测试应用程序它工作得很好,但我认为如果没有背后的整个 Android 应用程序,就不可能使用它。

有没有办法用 Android 依赖项和 Robolectric 测试库?

我正在使用 Android Studio 1.2。

最佳答案

我认为 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);
}

}

关于java - 使用 Robolectric 测试 Android 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30028783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com