编写一个方法,接收一个非负整数并返回其阶乘,为该方法编写单元测试
时间: 2024-09-23 22:14:42 浏览: 113
编写一个计算非负整数阶乘的方法通常可以这样设计:
```java
public class FactorialCalculator {
public static long factorial(int n) {
if (n < 0) {
throw new IllegalArgumentException("输入的数值必须是非负整数");
}
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
}
```
这个方法首先检查输入是否合法,然后通过递归的方式计算阶乘。对于基本情况,当 `n` 等于 0 或者 1 时,阶乘的结果就是 1。
接下来,我们可以为这个 `factorial` 方法编写一些单元测试,使用JUnit或其他测试框架来验证它的正确性:
```java
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class FactorialCalculatorTest {
@Test
void testFactorialPositiveNumbers() {
assertEquals(1, FactorialCalculator.factorial(0));
assertEquals(1, FactorialCalculator.factorial(1));
assertEquals(2, FactorialCalculator.factorial(2));
assertEquals(6, FactorialCalculator.factorial(3));
assertEquals(24, FactorialCalculator.factorial(4));
}
@Test
void testFactorialInvalidInput() {
assertThrows(IllegalArgumentException.class, () -> FactorialCalculator.factorial(-1));
assertThrows(IllegalArgumentException.class, () -> FactorialCalculator.factorial(-5));
}
}
```
阅读全文