android - android kotlin,覆盖测试失败,kotlin编译代码
问题描述
具有 kotlin 功能,
private fun getContentTypeFromResponse(response: Response): String? {
return response.header(ELEM_HEADER_CONTENT_TYPE)?.toLowerCase()
.also{
println("+++ --- exit getContentTypeFromResponse(). contentTypet:$it")
}
}
它调用了:
val contentType: String? = getContentTypeFromResponse(response)
但是覆盖测试总是失败并指向它(尽管使用具有 contentType 设置或未设置的响应模拟测试了这两种情况)
当查看反编译的 java 代码时,似乎有一个死代码,这是 jacoco 覆盖范围抱怨,
if (var2 == null)
看起来永远不会是真的,所以块永远不会被切除:
private final String getContentTypeFromResponse(Response response) {
String var10000 = response.header("Content-Type");
String var2;
boolean var3;
if (var10000 != null) {
var2 = var10000;
var3 = false;
if (var2 == null) {
throw new NullPointerException("null cannot be cast to non-null type java.lang.String");
}
var10000 = var2.toLowerCase();
Intrinsics.checkNotNullExpressionValue(var10000, "(this as java.lang.String).toLowerCase()");
} else {
var10000 = null;
}
var2 = var10000;
var3 = false;
boolean var4 = false;
int var6 = false;
String var7 = "+++ --- exit getContentTypeFromResponse(). contentTypet:" + var2;
boolean var8 = false;
System.out.println(var7);
return var2;
}
如何使覆盖测试正常工作?
解决方案
推荐阅读
- git - 如何从命令行创建 gitlab 项目
- openssl - 将证书从 .pem 文件复制到另一个
- entity-framework-core - 如何一次回滚多个 EF Core 迁移
- c++ - 如何在 C++17 中将“else-if”与初始化程序一起使用?
- macos - 有没有办法确定我的 macOS 机器上 docker 卷的大小?
- python - 矩形属性似乎不可调用(碰撞)
- java - 如何基于 Avro Schema 将 XML 转换为 AVRO?
- android - spinner的非选中值如何使用?
- c# - 我可以使用 Entity Framework 来跟踪 DataSet 之类的更改(无需连接到数据库)吗?
- excel-formula - 如何从这个公式的所有范围中排除 0?