使用 qstest 实现单元测试

使用 qstest 实现单元测试

我正在尝试弄清楚如何测试我的xpeek包(参见https://github.com/jcsalomon/xpeek)我偶然发现了关于 TeX 编程自动测试的民间传说是什么?LaTeX 的测试框架 API. 这两处都提到了qstest包,但我无法理解如何使用它。

具体来说,考虑这个测试xspacexpeek可以用来实现\xspace,所以这与我想要做的相差不远):

\documentclass{article}
\usepackage{xspace, qstest}
\begin{document}

\begin{qstest}{test xspace}{}
  \Expect{foo\xspace.}{foo.}
\end{qstest}

\end{document}

失败,并产生以下错误消息:

! Package qstest Error: Failed: test xspace
 \Expect: foo\xspace .
 <foo.
 >foo\xspace ..

See the qstest package documentation for explanation.

显然我在这里遗漏了一些基本知识,但阅读qstest软件包文档并没有让我更清楚。有人能向我解释如何编写测试以使其成功吗?

答案1

foo\xspace.”和“ foo.”确实不同,因此测试一定失败。\Expect如果参数前面带有星号,则可以展开这些参数:

\Expect*{foo\xspace.}{foo.}

但是,这也无济于事,因为\xspace不可扩展(\futurelet和其他任务一样)。但我们可以将参数放在一个框中并测量宽度。如果\xspace插入一个空格,框的宽度会更大。

\begin{qstest}{test xspace}{}
  \sbox0{foo\xspace.}
  \sbox2{foo.}
  \Expect*{\the\wd0}*{\the\wd2}
\end{qstest}

相关内容