我在java中有以下代碼。如何在java中使用junit獲得100%的覆蓋率
if(response != null && response.getResponseBlock() != null)
{
//do something
}
如何覆蓋if()中條件的100%分支覆蓋率。
儘管條件是一個有效的java語句,但當getResponseBlock不爲null,但響應爲空時,我無法實現這種情況。
請指教。
我在java中有以下代碼。如何在java中使用junit獲得100%的覆蓋率
if(response != null && response.getResponseBlock() != null)
{
//do something
}
如何覆蓋if()中條件的100%分支覆蓋率。
儘管條件是一個有效的java語句,但當getResponseBlock不爲null,但響應爲空時,我無法實現這種情況。
請指教。
我覺得答案是作爲註釋: 難道這是由Java語言阻止的狀態規格本身?我喜歡這裏Bob的叔叔的話:blog.cleancoder.com/uncle-bob/2017/03/06/TestingLikeTheTSA.h tml將100%[coverage]視爲一個漸近的目標。 - eug.nikolaev
由於java不允許它,我們不能100%覆蓋它。 100%的分支和線路覆蓋率是一個理想的目標,應該儘可能地嘗試。但有時候,當它不可能的時候,它是不可能的。接受它並繼續解決更好的問題。
我們需要涵蓋if的所有測試可能性。在這種情況下,我們可能有四種可能性。
例如類:
package com.java.basics;
public class Response {
private String responseBlock;
public static void main(String[] args) {
Response response = new Response();
if (response != null && response.getResponseBlock() != null) {
// something
}
}
public String getResponseBlock() {
return responseBlock;
}
public void setResponseBlock(String responseBlock) {
this.responseBlock = responseBlock;
}
}
可以測試...
package com.java.basics.test;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import org.junit.Before;
import org.junit.Test;
public class ResponseTest {
private Response response;
@Before
public void setUp() throws Exception {
response = new Response();
response.setResponseBlock("Test");
}
@Test
public void testIsResponseIsNull() {
//25 %
response = null;
assertNull(response);
}
@Test
public void testIsResponseIsNotNull() {
//25 %
assertNotNull(response);
}
@Test
public void testIsResponseBlockIsNull() {
//25 %
response.setResponseBlock(null);
assertNull(response.getResponseBlock());
}
@Test
public void testIsResponseBlockIsNotNull() {
//25 %
assertNotNull(response.getResponseBlock());
}
}
這是一種被Java語言規範本身阻止的狀態嗎? 我喜歡Bob叔叔的話:http://blog.cleancoder.com/uncle-bob/2017/03/06/TestingLikeTheTSA.html 將100%[覆蓋率]視爲漸近的目標。 –
當然你不能^^你爲什麼要測試不可能的東西? –
對於我們編寫的每一行代碼,實現100%的行和分支覆蓋率感覺很好。所以想到這一點,我只是想着如何實現100%的覆蓋率。如果我不能,我應該如何重構它。 – YRP