ifのすべての可能性をカバーする必要があります。この場合、4つの可能性があります。例えば
クラス:
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言語仕様自体によって妨げられている状態ですか? ここでは、おじさんの言葉が好きです:http://blog.cleancoder.com/uncle-bob/2017/03/06/TestingLikeTheTSA.html 100%[カバレッジ]を漸近的な目標として扱います。 –
もちろん、あなたは何もできないことをテストしたいのですか? –
私たちが書いたコードのすべての行について、100%の行と分岐のカバレッジを達成することは良いことです。そのことを考えて、私は100%のカバレッジを達成する方法を考えていただけです。私ができなければ、私はどのようにそれをリファクタリングすべきですか? – YRP