SonarCloud覆盖范围,声明带有JsonProperty注解的类属性不在测试范围内

6tqwzwtp  于 2022-10-23  发布在  Spring
关注(0)|答案(1)|浏览(155)

我有一个使用Spring的Kotlin项目,并且我创建了一个如下所示的类:

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

我的SonarCloud报告指出,quantityOfDays这条线不在测试范围之内:

这一行在我的测试中被多次访问,我甚至专门创建了一行来示例化该类的对象。但是,此行仍被标记为未覆盖。
我想知道它是否与注解有关,如果是,我如何忽略或强制覆盖这一行?

jjhzyzn0

jjhzyzn01#

好的,因此,有必要编写一些非常具体的测试来涵盖这一点:

class ResponseTest {

    @Test
    fun `create response from json with underline attribute`() {
        val id = "123"
        val quantityOfDays = 1
        val response = Response(id, quantityOfDays)

        val value = Mapper.objectMapper.readValue(
            """
                {
                    "id": "$id",
                    "quantity_of_days": $quantityOfDays
                }
            """.trimIndent(), Response::class.java)

        assertThat(value).isEqualTo(response)
    }

    @Test
    fun `create response from json with camel case attribute`() {
        val response = ResponseBuilder().build()
        val json = Mapper.objectMapper.writeValueAsString(response)

        val value = Mapper.objectMapper.readValue(json, Response::class.java)

        assertThat(value).isEqualTo(response)
    }
}

我不确定这是否是最好的解决方案,也许有一种方法可以让报道忽略具体的这一点,但我找不到它。但它确实奏效了。

相关问题