【问题标题】:Can unit tests be used for checking student work单元测试可以用来检查学生的作业吗
【发布时间】:2014-02-03 18:55:09
【问题描述】:

我有一班高中编程学生,我想要一种自动化的方式来检查他们工作的有效性。我浏览了他们的代码并寻找结构、效率和基本的预期结果,但我希望将其提升到另一个层次。

单元测试会是一个可行的解决方案吗? 有没有一种优雅的方法可以同时检查一堆学生项目?

我们正在使用 Eclipse,我已经从他们的本地网络驱动器导入了他们的项目,其中包含他们所有的程序。效果很好。我只是想给他们更多关于他们如何做的反馈,甚至向他们介绍单元测试,这是我从未做过的事情。

【问题讨论】:

  • 如果您要获取代码,请向我们展示您迄今为止尝试过的内容并提出更具体的问题。我可以告诉你这是可能的,但有很多方法可以做到这一点。在问题的当前状态下,它可能更适合programmers.stackexchange.com。
  • @assylias 感谢您的链接。看起来这是用于测试方法的。我们还没有使用方法。似乎您还需要在一个班级中拥有所有学生的方法,然后它会通过并检查它们。对于某些程序来说,这将花费太多时间。稍后我将不得不再看一下。
  • 该示例假设每个学生一个班级,因此您基本上将收到的所有班级复制粘贴到一个文件夹中,收集班级名称并运行测试。

标签: java unit-testing


【解决方案1】:

是的,你可以这样做来检查学生的工作情况

Unit Testing reduces the level of bugs in production code. 
Automated tests can be run as frequently as required.

【讨论】:

  • “自动化测试可以根据需要频繁运行。”怎么样?
  • @tazboy 如果你制作了自动化测试套件,那么你可以每天运行它,而不需要太多努力,我的朋友
  • 如何进行这些自动化测试?
【解决方案2】:

在我的大学里,我们对练习进行了自动化测试。我们只是将类文件或构建的 jar 邮寄到一个电子邮件地址。在服务器端,您将它们设置在类路径中并开始测试。它实际上很容易实现。重要的是在给定的需求中清楚地记录包结构等,甚至可以提供项目框架。

好消息:为学生提供了一组较小的测试,因此他们可以在提交之前验证他们的工作。

【讨论】:

  • 我想我听说过服务器端测试。似乎是个好主意。我不知道该怎么做。你说挺简单的,有资源给我吗?
  • 好吧,我想您可以使用现有工具处理这一切。轮询邮件服务器,解析主题以识别考试,将附件复制到临时文件夹并使用正确的类路径运行测试。根据成功或失败发送答案。不需要太多编程,只需要一点命令行fu。也可以只用几百行代码在 java 中完成。取决于你的技能,什么最适合你。
【解决方案3】:

我认为将他们介绍给单元测试和 TDD 是个好主意。

但是,如果您编写单元测试并在学生完成作业之前将它们提供给他们,那么他们将不会学习编写单元测试。此外,他们将根据您的测试构建他们的代码,这可能是也可能不是您想要的。

另一方面,如果他们编写单元测试,他们将学习如何执行此操作,但您不会知道他们的测试在测试什么。

也许您可以提取代码测试覆盖率并分配它们以达到 80、90 或 100% 的覆盖率或类似的东西。

我今天为最终的新员工复习了一次编程测试,我觉得编程选择背后的原因非常重要。

【讨论】:

  • 代码覆盖率并不是一个好的测试质量标准,也不应该作为单一目标。
  • 我同意。这就是为什么我写下编程选择背后的原因很重要。此外,他正在寻找一种廉价的方式来提供更多反馈,并且正在考虑进行单元测试。覆盖范围可能是反馈中的一个组成部分。
  • 我自己从未做过单元测试,但我觉得这是编程中不可或缺的一部分。所以很遗憾我对此一无所知。顺便说一句,你的陈述似乎单元测试是在类中编码的。在那种情况下,我知道你来自哪里。而且我不知道什么是代码覆盖率。天哪。
猜你喜欢
  • 1970-01-01
  • 2020-05-09
  • 2015-10-20
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-24
相关资源
最近更新 更多