gpt4 book ai didi

unit-testing - 如何测试启动我的应用程序的方法?

转载 作者:行者123 更新时间:2023-11-28 20:11:44 24 4
gpt4 key购买 nike

我有一个用脚本语言编写的命令行应用程序。启动脚本执行如下操作:

import 'App'
app = new App()
app.run()

run() 方法负责实例化所有必需的对象,然后实际启动应用程序:

import 'Artist', 'Song', 'Listener'

class App
method run()
artist = new Artist()
song = new Song()
listener = new Listener(artist, song)
listener->listen()
end
end

我如何编写测试以确保 run() 正在执行它应该执行的操作?

我最初的想法是添加一个可选参数,这样我就可以传递 Listener 的模拟并期望 listen() 被调用,但它没有告诉我实际的 Listener 类是否会在运行应用程序时正确实例化。

另一个想法是将所有对象传递给 run(),但是我必须在启动脚本上创建它们,我也必须测试它并且出现同样的问题。

最佳答案

我会说不要测试对象是否正确创建。我假设您在自己的单元测试中测试了 Listener 类的构造函数。鉴于我会说您可以相信解释器可以正确构造您的对象。如果您想测试解释器是否可以构造类,那么您正在测试您的脚本语言而不是您的应用。

如果您想对 App 类进行功能测试,这意味着检查 listen() 是否完成了它应该做的任何事情。你如何做到这一点又取决于 listen() 应该做什么。

另一种选择是公开您需要测试的内容,当然有很多关于更改代码以使其更易于测试的争论。我不会在这里讨论它们。但是您可以在 App 中公开您的 Listener 类,以便您可以在测试中查询它。

[略一提:某些语言提供了向特定程序集公开属性的方法,这样您就不必公开公开属性(internalsvisibleto,我在看你的 C#)。]

关于unit-testing - 如何测试启动我的应用程序的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26655134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com