You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SonarCloud提示带JsonProperty注解的类属性未被测试覆盖的问题咨询

解决SonarCloud标记Kotlin Data Class注解行未覆盖的问题

你遇到的核心问题是:直接实例化Data Class不会触发@JsonProperty注解的处理逻辑,SonarCloud会认为注解所在的属性行没有被真正执行——哪怕你已经访问过该属性。下面是几种可行的解决办法:

1. 补充反序列化测试(推荐)

添加模拟Jackson反序列化JSON的测试用例,触发@JsonProperty的解析逻辑,SonarCloud就能识别到该行的覆盖:

import com.fasterxml.jackson.databind.ObjectMapper
import org.junit.jupiter.api.Test
import kotlin.test.assertEquals

class ResponseTest {
    @Test
    fun `deserialize Response from JSON`() {
        val json = """{"id":"test-id","quantity_of_days":10}"""
        val response = ObjectMapper().readValue(json, Response::class.java)
        
        assertEquals(10, response.quantityOfDays)
        assertEquals("test-id", response.id)
    }

    // 保留原有实例化测试
    @Test
    fun `create Response instance`() {
        val response = Response("test-id", 10)
        assertEquals(10, response.quantityOfDays)
    }
}

2. 用Sonar注释忽略该行检查

如果不想补充测试,可在属性行添加//NOSONAR注释,强制SonarCloud跳过该行的覆盖检测:

@JsonIgnoreProperties(ignoreUnknown = true)
data class Response(
    val id: String,
    @JsonProperty("quantity_of_days")
    //NOSONAR
    val quantityOfDays: Int,
)

注意:这是跳过检查而非真正覆盖,仅在确认逻辑无问题时使用。

3. 全局配置忽略(不推荐)

可在项目的sonar-project.properties中添加规则,但会影响整个项目的覆盖检查,仅适合特殊场景:

sonar.coverage.exclusions=**/Response.kt

内容的提问来源于stack exchange,提问作者Lavínia Beghini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 21:30:51