用于运行和解释junit5单元测试的check50扩展
check50-junit的Python项目详细描述
支票50
这是CS50 automarker check50的扩展 用于编译和运行Junit5单元测试 并将产生的失败直接作为check50失败进行检查。在
此模块附带Junit5's stand-alone console launcher。在
你的问题集只需要包含junit测试类的编译字节码, 它们是根据练习的模型解决方案编译的。 这就解决了单元测试不能为学生代码编译的问题 由于意外的方法签名类标识符。 这些错误将反映在JUnit的报告XML文件中。在
示例用法
TLDR:importcheck50_junit
;将编译后的junit测试类添加到pset,并在检查中使用check50_junit5.run_and_interpret_test
。
下面是一个完整的例子。在
下面的所有示例假设您正在导入check50
和{
- 在
编写模型解决方案和单元测试类,并手动编译它们。在
publicclassDrink{privatefinalintvolume;publicDrink(intv){volume=v;}intgetVolume(){returnvolume;}
^{pr2}$ 在 - 在
将字节码
在DrinkTest.class
移到pset目录的某个地方,比如在tests/
下。在 - 在
添加一个检查,如下所示(我通常会让这个依赖于类存在、编译和可以实例化的检查)。在
@check50.check()defdrink_getVolume():"""Test Drink.getVolume()"""check50_junit.run_and_interpret_test(classpaths=['tests/'],args=['--select-method','DrinkTest#getVolume'])
这将在学生提交的文件上运行预编译的单元测试,解析junit的XML报告并根据结果引发任何
在check50.Failure
。在这种情况下,如果单元测试中的assertEquals
被抛出,它将引发check50.Mismatch
异常。在 - 在
确保在pset的
.cs50.yml
中添加check50-java
作为依赖项:check50: dependencies: - check50-java files: - !exclude "*" - !include "*.java"
在
- 项目
标签: