我目前正在编写一些Android单元测试,虽然我已经按照自己想要的方式完成了大多数工作,但有一件事让我有些困惑。
我的测试活动中包含以下代码:
Intent result = new Intent();
result.putExtra("test", testinput.getText().toString());
setResult(Activity.RESULT_OK, result);
finish();
我试图弄清楚如何使用Instrumentation(或其他工具)来读取活动的结果,或者在活动完成后获得意图。有人可以帮忙吗?
您可以使用反射并直接从活动中获取值。
protected Intent assertFinishCalledWithResult(int resultCode) {
assertThat(isFinishCalled(), is(true));
try {
Field f = Activity.class.getDeclaredField("mResultCode");
f.setAccessible(true);
int actualResultCode = (Integer)f.get(getActivity());
assertThat(actualResultCode, is(resultCode));
f = Activity.class.getDeclaredField("mResultData");
f.setAccessible(true);
return (Intent)f.get(getActivity());
} catch (NoSuchFieldException e) {
throw new RuntimeException("Looks like the Android Activity class has changed it's private fields for mResultCode or mResultData. Time to update the reflection code.", e);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
我有一个和一个。当接收到广播时,两个活动都需要完成。但是,如果位于之上,下面的代码将导致黑屏。
如果它没有返回任何东西,是否可能以某种方式测试它是否停止了这个if语句?我的意思是,我想把某种断言,检查“好吧,上下文是空的,所以它在这个返回时停止了”。 当然,问题是类是空的,为什么我想测试这种方法可能会有问题,但我想听听一些可能性。
谁能帮帮我吗???
问题内容: 我有基于gradle的带有junit测试的Java项目,我正在为其构建CI工作。我使用松弛Slack Notification插件成功地将松弛与Jenkins集成在一起。 Jenkins版本:2.173 松弛通知版本:2.20 jenkins CI是脚本化管道,具有以下代码: SlackNotifier是一个包含以下代码的库: buildUnitTestSlackNotificatio
问题内容: 有什么方法可以通过teardown()方法获取测试结果?我想根据结果在测试后进行清理。 在junit文档中找不到太多详细信息。 问题答案: 与您要求的最接近的东西可能是TestWatcher规则。那将不能让您访问返回的结果或其他任何东西,但是您可以使用它(或创建自己的TestRule并与Description对象结合使用,可以对方法进行不同的注释,以指示需要进行哪种清理。