【问题标题】:How to unittest a struct without exposing accessor如何在不暴露访问器的情况下对结构进行单元测试
【发布时间】:2015-09-03 10:59:57
【问题描述】:

假设我想构建一个向量库。它有一个 Vector 结构:

(struct vector (x y z))

现在我想在测试模块中为向量模块编写单元测试。 为了测试,我需要访问 x y 和 z。但我不想暴露vector-{xyz}。有没有办法只为单元测试提供访问器?

【问题讨论】:

  • 使测试成为子模块(在同一个文件中)? [不确定这是否是您所追求的]

标签: unit-testing racket abstract-data-type


【解决方案1】:

确实,我找到了一种使用 submodule 隐藏东西的方法

 ;; vector.rkt
 (struct vector (x y z))

 (module* private-test #f
           (provide vector-x vector-y vector-z))

然后我可以要求私人测试仅用于测试目的。

 ;; test.rkt
 (require (submod "vector.rkt" private-test)

【讨论】:

  • 注意:(module+ foo body ...)(module* foo #f body ...) 相同,如果您将测试子模块命名为 testraco test 工具会自动运行它,因此您可以把你所有的测试代码放在测试子模块中。
  • @Jack 感谢您的来信。但我想把我所有的测试放在另一个文件中。
猜你喜欢
  • 2019-07-13
  • 2023-03-19
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多