因为所有学生都有相同的包/类和方法名称。编写一个测试方法的 JUnit 类应该很容易。您需要做的就是弄清楚如何将每个学生的课程挂钩。
由于您控制所有代码,因此我建议包括一个工厂方法或已知构造函数来创建每个学生实现的实例。甚至可以使用像 Google Guice 这样的依赖注入框架来为您处理创建。
我从未尝试过,但Jukito似乎很有希望,它使用 Guice 直接注入到您的单元测试中。但是,看起来他们最近移动了存储库并且尚未更新 wiki 链接(这是他们的旧项目页面,其中至少有代码示例)
@RunWith(JukitoRunner.class)
public class Project1Test{
@Inject
Project1 studentImplementation;
@Test
public void testMethod1(){
//...
}
@Test
public void testMethod2DoesntOverflow(){
//...
}
//...
}
}
我什至建议学生在提交之前自行运行测试,以便他们查看自己是否满足所有要求并通过所有测试。(当然你会运行自己的测试副本,这样学生就不会修改测试,所以无论如何他们总是通过)
如果这不起作用,您总是可以编写一个脚本来执行某种查找/替换以粘贴到学生的实现中,然后一遍又一遍地重新编译和运行代码。