假设我有个基类叫 Animal:
package zoo;
public abstract class Animal {
abstract boolean canWalk();
abstract boolean canSpeak();
// ...... lots of ability
}
我为 Animal 实现了很多子类:Dog Cat Pig Sheep Cow ...... 然后写出 Animal 的单元测试代码:
package zoo;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class AnimalTest {
Animal animal;
@Test
void testWalk() {
assertTrue(animal.canWalk());
}
@Test
void testSpeak() {
assertTrue(animal.canSpeak());
}
// ...... lots of test
}
请问我该如何修改 Java 代码来用 JUnit 自动装填对象并分别逐一测试,复用同一套测试代码来测试上十种不同的 Animal 子类实例呢?
注意:尽量不要为逐个 test* 方法做修改,因为 Animal 要测试的功能有很多、而且测试逻辑并无差异!