我是一门Java课程的助教,我的部分工作是每周给大约100份Java编程作业评分,每个作业由3-5个独立的Java程序组成。为学生提供了每个问题的框架(这使得包/类/方法的名称相同),他们所要做的就是填写方法的逻辑。
我想知道验证所有这些提交的正确性的最好方法是什么,也许是使用JUnit (或类似的框架)和一些脚本?在我继续之前,我想知道是否有更好的方法来实际设置系统,其中我只需更改测试用例(以及相应的类/方法名称),并能够执行整个赋值集?
我主要在寻找一个可以做到这一点的框架的指针,尽管我非常欢迎实现框架的详细解决方案/类似的实例!
发布于 2013-09-04 05:58:43
我想我可以通过subversion做到这一点。每个任务都有单独的目录。学生在准备好时签到,这会触发运行JUnit测试。
我不确定你能不能不自己写代码就离开。单元测试必须找出它运行的是谁的代码,然后运行它,等等。不确定是在单元测试中这样做,还是让jenkins来做会更好。
发布于 2013-09-04 08:37:30
因为所有的学生都有相同的包/类和方法名。编写一个测试这些方法的JUnit类应该很容易。你所需要做的就是弄清楚如何把每个学生的班级挂在一起。
由于您可以控制所有代码,因此我建议包含一个工厂方法或已知的构造函数来创建每个学生的实现的实例。甚至可以使用像Google Guice这样的依赖注入框架来为您处理创建。
我从未尝试过,但Jukito似乎很有前途,它使用Guice直接注入到您的单元测试中。然而,看起来他们最近移动了存储库,还没有更新wiki链接( here是他们的旧项目页面,其中至少有代码示例)
@RunWith(JukitoRunner.class)
public class Project1Test{
@Inject
Project1 studentImplementation;
@Test
public void testMethod1(){
//...
}
@Test
public void testMethod2DoesntOverflow(){
//...
}
//...
}}
我甚至建议学生在提交之前有一种方法自己运行测试,这样他们就可以看到他们是否满足所有要求并通过所有测试。(当然,您可以运行自己的测试副本,这样学生就不会修改测试,这样无论发生什么,它们都会通过测试)
如果这不起作用,你可以编写一个脚本,执行某种查找/替换操作,然后粘贴到学生的实现中,然后重新编译并反复运行代码。
https://stackoverflow.com/questions/18601978
复制相似问题