【发布时间】:2019-11-21 20:32:47
【问题描述】:
我正在编写一个名为 Fibonacci 的类,其中包含三个静态方法,它们使用不同的方法(递归、记忆等)实现了 Fibonacci 系列的三种不同实现。
然后我创建了一个测试包,并在其中创建了一个简单的 junit 测试,用于检查将负数传递给斐波那契函数时是否引发异常:
@Test
void testIllegalArgumentException() {
Assertions.assertThrows(IllegalArgumentException.class,
() -> Fibonacci.fibonacci_recursive(-2));
}
我的问题是:是否可以编写一个将函数作为参数的单个测试?换句话说,我想避免写以下内容:
@Test
void testIllegalArgumentException() {
Assertions.assertThrows(IllegalArgumentException.class,
() -> Fibonacci.fibonacci_recursive(-2));
}
@Test
void testIllegalArgumentException() {
Assertions.assertThrows(IllegalArgumentException.class,
() -> Fibonacci.fibonacci_second(-2));
}
@Test
void testIllegalArgumentException() {
Assertions.assertThrows(IllegalArgumentException.class,
() -> Fibonacci.fibonacci_third(-2));
}
【问题讨论】:
-
为什么?您有三种正在测试的方法。那么为什么不进行三个测试,那么当它们中的任何一个发生故障时,它就是干净的。问题:为什么你认为可以使用三种不同的(生产代码)方法而不是三种测试......?我发现您对相同代码的推理方式不同,这很奇怪……测试只是反映了代码。那为什么不把被测代码也改一下呢……?
-
@Jocke 你是对的..但我只是为自己编码..没有代码生产不用担心 :)
标签: java unit-testing junit fibonacci