在 ABAP 赛道上测试

学习如何在 Exercism 上测试你的 ABAP 练习


在 Exercism 上

每个练习都以一个 ABAP 类(包含一个或多个方法)的形式提供。通常,题目会给出带有输入和输出参数的方法定义。你的任务是根据练习的要求补全方法的实现。

写好想要测试的代码后,点击“运行测试”。这会触发相应 ABAP 测试类的执行,几秒后就会显示结果。如果出现错误,回到代码里做相应调整。如果所有测试都通过,恭喜!你完成了这个练习,可以提交解答了。

排查问题

在幕后,你的 ABAP 代码是通过所谓的 abaplint 转译器 编译并执行的。这还是一个相对较新的方案。如果你遇到了解决不了的问题,请在 GitHub 上创建一个 issue。

调试与日志

在 Exercism 网站上运行 ABAP 练习时,没有可用的调试器。这让你很难判断测试为什么会失败。不过,有一个巧妙的方法可以在代码里记录数据(注意:这在任何 ABAP 系统中都不起作用)。

这里有一个例子。第一张图片展示了练习代码以及一些未通过的测试。每个失败的测试都会显示期望值和实际值:

没有日志输出的练习

为了让调试更容易,可以添加一处或多处console=>log()调用,并把中间数据传给这个方法。使用换行符(\n)有助于组织输出。运行测试时,你会在测试结果中看到控制台输出:

带日志输出的练习

注意:控制台输出只在测试失败时可见。如果你要发布自己提交的解答,不妨删掉这些日志语句,这样其他社区成员在读你已发布的迭代时会更容易。

在自己的系统上

完整学习路径

想在自己的系统上练习,最简单的入门方式是用 abapGit 克隆这个代码仓库。这会为当前所有可用的练习创建桩代码和测试类。

单个练习

打开 ABAP Development Tools(如果你用的是较旧的系统,也可以使用事务码SE24或SE80),新建一个 ABAP 类,名称与练习中的类相同。同样,从 Exercism 网站复制粘贴代码,实现类桩和测试类。

实现解答

现在你可以编辑某个练习对应的类,实现解答。然后运行 ABAP 单元测试,检查它是否通过所有测试。完成并通过测试后,把代码剪切粘贴到 Exercism 网站上该练习的编辑器中。在那里也运行一次测试。

测试并完成练习

在自己的系统上编写和测试代码时,使用的是标准的 SAP ABAP 编译和执行机制。如果测试失败,很可能与你自己的代码有关。再仔细检查一下。

如果你的代码顺利通过单元测试,把类实现剪切粘贴到 Exercism 网站上的练习中,然后点击“运行测试”。当然,那里的测试也应该通过。如果没有通过,请参阅上面的排查问题部分。