首页 > 解决方案 > 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;
   }

如何使覆盖测试正常工作?

标签: androidunit-testingkotlinandroid-jacoco

解决方案


推荐阅读