Skip to content

测试配置

通过题目的 conf.json 配置测试用例和测试行为。

测试用例

在题目的 conf.json 中,通过 tests 字段配置待测试的测试用例:

json
{
  "tests": {
    "std": {
      "expected": "== 100",
      "path": "tests/std.cpp"
    },
    "b-force": {
      "expected": [">= 60", "<= 80"],
      "path": "tests/b.cpp"
    }
  }
}

字段说明

字段类型说明
键名string测试用例名称,任意字符串,不影响实际测试
expectedstringstring[]期望得分表达式,见下方说明
pathstring程序文件路径,相对题目文件夹

如果测试用例较多,可使用 tuack-ng gen code 自动检测并写入配置。

expected 表达式

expected 是一个布尔表达式的右侧部分,左侧为实际得分。支持的语法包括但不限于:

表达式含义
== 100实际得分等于 100
>= 60实际得分大于等于 60
<= 30实际得分小于等于 30

可以传入字符串数组表示多个条件需同时满足:

json
"expected": [">= 10", "<= 60"]

expected == 100 的测试用例会被 tuack-ng dmk 用作标程(std)来生成答案文件,详见 造数据

SPJ

checker 字段

配置 Special Judge,替代默认的全文比较。

json
{
  "checker": {
    "data": {
      "source": "chk/chk.cpp",
      "deps": ["chk/testlib.h"]
    },
    "sample": {
      "source": "chk/chk.cpp",
      "deps": []
    }
  }
}
字段类型说明
checker.dataobject正式数据的 SPJ 配置
checker.sampleobject?样例数据的 SPJ 配置,为 null 时回退到 data

每个配置项包含:

字段类型说明
sourcestringSPJ 源文件路径(相对题目目录)
depsstring[]依赖文件列表,显式声明需要参与编译的文件(如 testlib.h

未配置 checker 时使用默认的全文比较(过滤行末空格及文末回车)。SPJ 编写规范详见 SPJ 编写参考

交互题

交互题的配置、测试与数据生成详见 交互题

文件 IO

文件 IO 通过 file-io 配置。

file-io 可在比赛和比赛日配置,详见 工程配置文件,未指定时默认值为 true