【发布时间】:2018-08-31 09:56:11
【问题描述】:
我正在尝试在 java 中为 android 应用程序编写一些单元测试,但由于我是单元测试实现的新手,我想我需要一些帮助来解决以下具体问题。
我曾尝试在 google 和 stackoverflow 中找到解决方案,但没有找到任何对我有帮助的答案。
我在 class A 中有这个非常简单的方法:
@Override
public void beeperChanged(boolean active) {
b.setBeeper(active);
savePrinterToData(b);
}
b 这里是 class b 的一个实例。
savePrinterToData 是一种允许将实例保存在数据库中的方法 b
我想测试这个方法,更具体地说,测试当我调用 beeperChanged 时,是否在 b 上调用 setBeeper 并且如果 savePrinterToData 也被调用。
我写了这个:
@RunWith(PowerMockRunner.class)
@PrepareForTest({PosApplication.class, AppInfoHelper.class, SharedPreferencesHelper.class})
public class OnePrinterSettingFragmentPresenterTest {
@Mock
private A mA;
@Mock
private B mB;
@Test
public void beeperChanged() throws Exception {
boolean boo;
boo = true;
mA.beeperChanged(boo);
verify(mB).setBeeper(boo);
}
我读到 verify 可以或多或少地完成检查方法是否被调用的任务。但是 android Studio 用红色强调了声明是错误的,并且没有给我任何解决方案。 (我目前没有测试是否调用了 savePrinterToData,因为我至少想先用 setBeeper 解决问题)
我很困惑,任何帮助都会非常好。 谢谢你
【问题讨论】:
-
您是否考虑过使用您希望验证正在调用的方法的模拟实现?模拟实现将是一个标准的单元测试断言,如果没有达到 - 将表明方法没有被调用。
-
您是否为
verify方法编写了静态导入? -
@DawoodibnKareem 我已经导入 import static org.junit.Assert。
-
我很高兴听到这个消息。
verify方法你导入了吗? -
@DawoodibnKareem 抱歉,当我复制粘贴时发生错误:我已导入 import static org.junit.Assert.* 这是 android studio 在我输入验证方法时建议的编辑:再次出错,这是android studio 建议的正确导入 ^^ import static org.easymock.EasyMock.verify;
标签: java android unit-testing mocking