public class Calculator { public int add(int a, int b) { if (a < 0 || b < 0) { throw new IllegalArgumentException("Both arguments must be non-negative."); } return a + b; } },对以上代码运用MC/DC测试技术进行覆盖率测试,写出测试过程和代码
时间: 2023-04-07 12:05:02 浏览: 90
我可以回答这个问题。
MC/DC测试技术是一种基于判定覆盖的测试技术,它要求每个判定的每个条件都至少被覆盖一次,并且每个判定的结果都至少被覆盖一次。对于这段代码,我们可以列出以下测试用例:
1. a=1, b=1
2. a=0, b=1
3. a=1, b=0
4. a=0, b=0
其中,第1个测试用例覆盖了判定条件a>0和b>0的两个分支,第2个测试用例覆盖了判定条件a=0的分支,第3个测试用例覆盖了判定条件b=0的分支,第4个测试用例覆盖了判定条件a<0或b<0的分支。
以下是测试代码:
```
import org.junit.Test;
import static org.junit.Assert.*;
public class CalculatorTest {
private Calculator calculator = new Calculator();
@Test
public void testAdd() {
// Test case 1: a=1, b=1
int result = calculator.add(1, 1);
assertEquals(2, result);
// Test case 2: a=0, b=1
try {
calculator.add(0, 1);
fail("Expected IllegalArgumentException");
} catch (IllegalArgumentException e) {
assertEquals("Both arguments must be non-negative.", e.getMessage());
}
// Test case 3: a=1, b=0
try {
calculator.add(1, 0);
fail("Expected IllegalArgumentException");
} catch (IllegalArgumentException e) {
assertEquals("Both arguments must be non-negative.", e.getMessage());
}
// Test case 4: a=0, b=0
result = calculator.add(0, 0);
assertEquals(0, result);
}
}
```
以上代码中,我们使用JUnit框架编写了一个测试类CalculatorTest,其中包含了一个testAdd()方法,用于测试Calculator类的add()方法。在testAdd()方法中,我们依次执行了四个测试用例,并使用断言语句assertEquals()验证了每个测试用例的期望结果。如果测试结果与期望结果不一致,则会抛出异常,测试失败。