输入整数a和n,输出结果s,其中s与a、n的关系是:s=a+aa+aaa+aaaa+aa...a, 最后为n个a。例如a=2、n=3时,s=2+22+222=246。使用Junit工具编写白盒测试用例
时间: 2024-11-19 19:03:18 浏览: 10
头歌4月27日实训作业
在Java中,你可以通过循环结构来计算这个序列,并利用字符串拼接来构建s。下面是一个简单的函数实现这个功能:
```java
public int calculateSum(int a, int n) {
StringBuilder sb = new StringBuilder(); // 用于存储字符串
for (int i = 0; i < n; i++) {
sb.append(a);
if (i != n - 1) { // 如果不是最后一个数字,需要加a
sb.append(a);
}
}
return Integer.parseInt(sb.toString()); // 将字符串转换回整数并返回
}
```
接下来,为了编写一个JUnit测试用例,你需要创建一个`Test`类,并在其中添加测试方法。这里是一个例子:
```java
import org.junit.Test;
import static org.junit.Assert.*;
public class SumCalculatorTest {
@Test
public void testCalculateSum() {
// 测试案例1: 正常情况
assertEquals(246, calculateSum(2, 3));
// 测试案例2: a为0,检查是否正确处理边界情况
assertEquals(0, calculateSum(0, 5));
// 测试案例3: n为0,预期结果是a本身
assertEquals(2, calculateSum(2, 0));
// 测试负数和大数的情况
// 测试案例4: 检查输入负数的处理
try {
calculateSum(-1, 2);
fail("Expected exception when input is negative");
} catch (IllegalArgumentException e) {
System.out.println("Caught expected exception: " + e.getMessage());
}
// 测试案例5: 检查输入超过Integer最大值的情况
try {
calculateSum(Integer.MAX_VALUE + 1, 1);
fail("Expected exception when input exceeds max integer");
} catch (ArithmeticException e) {
System.out.println("Caught expected exception: " + e.getMessage());
}
}
}
```
阅读全文