设为首页 加入收藏

TOP

[Android]使用自定义JUnit Rules、annotations和Resources进行单元测试(翻译)(三)
2017-10-13 10:35:43 】 浏览:2602
Tags:Android 使用 定义 JUnit Rules annotations Resources 进行 单元 测试 翻译
ot;
+ resourceName + " from " + testClass; try (Reader reader = new BufferedReader(new InputStreamReader(in))) { mValue = mGson.fromJson(reader, clazz); } }

Listing 10. Statement的实现.

description参数在这里是必不可少的,它可以让我们访问测试方法包括注解在内的元数据。Rule适用于所有测试方法,包括没有注解的,这种情况下getAnnotation()会返回null,并且我们可以有条件地跳过定制的其余部分。所以测试方法没有@JsonFileResource注解的测试方法(比如,一些不涉及JSON的测试)可以放在使用了JsonParsingRule的测试类中。第8行是下面代码的一个简写等效

if (in != null) {
 throw new AssertionError("Failed to load resource: " + resourceName + " from " + testClass);
}

Listing 11. 断言语句判定.

最后我们传入使用被Reader包装的resource到GSON引擎。Try-with-resources语句在这里被使用,所以Reader将会在读取甚至发生异常之后自动关闭。这里需要在finally块中明确类型。

注意try-with-resources从Android API 19(Kitkat)才可用。如果测试代码位于Android gradle module中,并且你的minSdkVersion低于19,那么你可能需要在eva luate()方法上增加@TargetApi(Build.VERSION_CODES.KITKAT)注解来避免lint错误。单元测试会在开发机器(Mac,PC等)上被执行而不是Android设备或者模拟器,所以这里只有compileSdkVersion才是关键。

这样的单元测试(不需要使用Android特定的API)也可以被放在java module中(build.gradleapply plugin: 'java')。理论上这事最好的idea,但是在Android Studio/Intellij IDEA中有一个问题需要预防,那就是从IDE开箱即用地执行单元测试的配置工作。

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android 监听ScrollView的滑动 下一篇标题栏透明度变化

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目