BUAA 软件学院 2023 秋《面向对象程序设计》评测机使用指南
本学期 patpat 已更新,迭代三、四只能使用新的 patpat,迭代二新旧版本均可。
本学期使用的各个版本的 patpat 下载链接如下:
支持 Windows,Linux 和 MacOS,包括:
对于 Mac 与 Linux 用户,需要首先 chmod +x patpat
,使评测机程序具有可执行权限。
请使用最新版本的 patpat,否则可能导致无法测评,或成绩无法被正确录入!🫣
Windows 下请使用 Terminal 打开 cmd 或 PowerShell,否则会乱码。
请严格按照如下的目录层级与命名准备好评测相关文件:
1 | / # 存放所有评测文件的根目录 |
在 1-22******-Name/src/
目录下,必须有 Test.java
作为程序入口。其他 Java 文件可以与 Test.java
并列,但是推荐按照一定结构放在单独的 Java 包中。😉
Test.java
不能在任何包下!即不能有 package
声明。
patpat 与普通的程序运行方式相同,如果要在命令行中使用 patpat
,需要将 patpat-windows-amd64.exe
重命名为 patpat.exe
。
judge.yaml
与 testcase.yaml
的编写方式见本地测评指南。🤔
运行方式
在终端(如 Command Prompt,Bash 等)中运行如下命令:
1 | ./patpat stu -judge 1-22******-Name # 本地测试命令 |
这里的 1-22******-Name
需要与存放源文件的目录名名称对应,请修改为自己的相关信息。线上测试需要先注册。🥸
对于 Windows,命令中的 ./patpat
需要改为 .\patpat
或 .\patpat.exe
,或者直接使用 patpat
或 patpat.exe
。
评测结果
详细评测结果见生成的 $testcase$_result.md
,报告会被统一输出到 report
目录下。
离线模式
仅在 stu
模式下有效,添加参数 -online=0
。
历史迭代评测
迭代在截止之后将无法评测,如果同学们想再次测试,可以在对应迭代名前加 10
来评测历史迭代,更改文件名即可。
如,第一次迭代 1-学号-姓名
对应的历史评测为 101-学号-姓名
。
历史评测仅用于辅助测试,不计入最终成绩。
该功能只是查询历史评测结果,并不进行评测。
查询助教评测结果前,需要注册账号 (sid
为您的学号),注册命令如下:
1 | ./patpat reg -sid your_sid -pwd your_password |
账号创建后,密码不支持修改。如需修改,请联系助教。
1 | ./patpat query -sid your_sid -pwd your_password |
学号及对应的密码正确后,即可显示截至目前的所有评测结果。
首先,确保自己的程序能够通过线上自评自测,然后再将 Java 源代码文件夹打包,压缩为 .zip
格式,上传至云平台。
压缩包内文件结构如下(和自评自测时相同):
1 | 1-22******-Name/ # 第几次作业-学号-姓名 |
压缩包内需要包括 1-22******-Name/
文件夹哦。👻
请务必反复确认文件的命名,如有误将无法评测!🥴
judge.yaml
的编写1 | # 请将本 judge.yaml 置于 test/ 目录下 |
在自评自测时,judge.yaml
中 tests
列表中的测试点名称,需要与 test
目录下的文件名一致。🧐
testcase.yaml
的编写testcase.yaml
由两部分组成,名称和数据。
任意名称即可。
1 | name: testcase1 |
测试数据中包含多个测试点,每个测试点为一个一级-
,测试点中的输入输出分别对应一个二级 -
。
根据输入输出行数,可将测试点分为以下几种。不会有无输入,有输出的测试点。
单行输入,无输出
1 | data: |
单行输入,单行输出
1 | data: |
单行输入,多行输出
1 | data: |
多行输入,无输出
1 | data: |
多行输入,单行输出
1 | data: |
多行输入,多行输出
1 | data: |
不建议使用带有多行输入与多行输出的测试点。😈
这里 data
部分的数据类型相当于 String[n][2]
。第一级的 -
表示一个测试点,第二级的第一个 -
对应输入,第二个(如果有的话)对应输出。第二级的输入是必须的,可以无输出,即至少为 1 个,至多为 2 个。
1 | name: testcase |
对于部分测试点中包含 :
的情况,YAML 会默认识别为字典,此时只需要用 ""
将整个字符串包起来即可,或是写成多行输出的格式,如下。
1 | - Register shop success (shopid: S-1) # 错误识别 |