我开发了一个带有登录屏幕的小应用程序,还编写了一些 Espresso 脚本来实现自动化。
我知道 WireMock 是一个灵活的库,用于存根和模拟 Web 服务。借助它可以创建实际的 HTTP 服务器,以便您的测试代码可以连接到真正的 Web 服务。
现在我想在wiremock的帮助下开发登录屏幕的Web服务。我已经浏览了这里提供的详细信息, 但描述太技术性了。如果有人有任何教程、参考或想法如何做同样的事情,那就太好了。
我正在使用以下工具。
- 安卓工作室
- 浓咖啡
- Gradle 构建工具
我开发了一个带有登录屏幕的小应用程序,还编写了一些 Espresso 脚本来实现自动化。
我知道 WireMock 是一个灵活的库,用于存根和模拟 Web 服务。借助它可以创建实际的 HTTP 服务器,以便您的测试代码可以连接到真正的 Web 服务。
现在我想在wiremock的帮助下开发登录屏幕的Web服务。我已经浏览了这里提供的详细信息, 但描述太技术性了。如果有人有任何教程、参考或想法如何做同样的事情,那就太好了。
我正在使用以下工具。
您可以像这样从验收单元测试中运行wiremock:
@Rule
public WireMockRule wireMockRule = new WireMockRule(options().port(PORT).notifier(new ConsoleNotifier(true)));
@Rule
public ActivityTestRule<T> activityRule = new ActivityTestRule<T>(type) {
@Override
protected void beforeActivityLaunched() {
stubFor(get(urlPathEqualTo("/myUrl"))
.willReturn(aResponse()
.withStatus(200)
.withBody("{ 'status': 'OK' }")));
}
};
@Before
public void before() {
activityRule.getActivity();
}
@Test
public void test() {
// using espresso trigger the call on your activity
}
我假设你有浓缩咖啡,你知道如何使用它。请注意,存根必须在 beforeActivityLaunched 方法中,否则如果活动在启动时进行一些调用,那么存根还没有准备好。
我想补充以前的答案并建议使用Wiremock JAX-RS(免责声明:我是作者)。如果您使用 JAX-RS 表达您的接口,它允许您自动化存根。
它添加了WireMockJaxrs.invocation(...)
这样使用的方法:
final List<ItemDTO> responseObject = Arrays.asList(new ItemDTO("pong"));
final StubMapping sm =
stubFor( //
invocation(ItemResouce.class, (r) -> r.getItems()) //
.willReturn(aResponse().withStatus(SC_ACCEPTED), responseObject));