【问题标题】:How do I instrument test runners in SUnit?如何在 SUnit 中检测测试运行器?
【发布时间】:2013-05-01 09:29:00
【问题描述】:

我想在Pharo 中进行 SUnit 测试。改变测试运行方式的正确方法是什么?

示例:

我想为测试引入超时,我运行的每个测试都应该在给定的延迟后中止。

问题:

SUnit 在模型中没有专用的TestRunner,这让我可以轻松地进行更改。我可以创建TestResult 的新子类并使用那里的API(runCase:addError: ...)来获得足够的控制。但是,更改结果类以修改测试运行方式的行为感觉很奇怪。

我习惯了SMark,那里有专门的跑步者来修改这些东西。

【问题讨论】:

    标签: unit-testing smalltalk pharo


    【解决方案1】:

    免责声明:我不知道 SUnit Pharo 使用什么版本,所以具体的 API 可能会有所不同。不过,我希望这会有所帮助。)

    子类化TestResult 是可行的方法,尽管它可能听起来有点奇怪。

    自定义一个新的“SUnit”实例的一般思路是:

    • 对于特定于运行的自定义,请在TestResult(即#runCase: aTestCase debugged: aBoolean)中进行
    • 对于特定于测试用例的定制,请在TestCase(即#performTest)中进行

    我个人希望 SUnit 尽可能简单,我认为没有理由引入新类。为什么?查看 JUnit 最近的变化。 :-) 我同意 SUnit 值得更多的文档。

    关于如何实现超时、跳过等示例,请看TestReport in Smalltalk/X

    【讨论】:

    • 我将深入研究 Smalltalk/X 版本,我认为 Pharo 的 SUnit 并没有太大变化。我采用了这种方法,如果您的本地测试需要特别小心,它会很好地工作。但是,如果我想做一些全球性的事情,它就行不通了。
    • 所以是的,你做子类TestResult 来为我获得自定义行为这听起来仍然是错误的:),结果,它不应该与运行有任何关系:/。但是 Smalltalk/X 在 Result addError:detail: 上有一个更好的协议,而 Pharo 中的 Co 只是 addError: 所以你错过了一半的信息。我想我会为pharo添加它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 2015-05-24
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 2019-05-14
    相关资源
    最近更新 更多