在我们的客户端/服务器应用程序中,服务器端由一组Web服务公开。客户端与我们称之为应用程序上下文的内容交互以调用服务器。我希望能够在验收测试期间模拟应用程序上下文,以便将测试隔离到客户端,而不是让测试从客户端到服务器一直流到数据库,并且必须使用我们想要运行的每个测试的正确数据。
这可能吗?或者我应该采取不同的方法吗?
答案 0 :(得分:2)
White使用Microsoft UI Automation运行,它查看任何支持的GUI。它根本不用担心底层代码,你也不能像使用单元测试那样与代码交互。
通常,您可以通过.exe启动应用程序,然后使用White自动执行它。要仅使用客户端启动它,您需要使进程本身从模拟的应用程序上下文开始。这意味着相应地编译.exe,或者有两个不同的可执行文件,其中一个正确配置你的包,其中一个没有。
如果没有数据库,您实际上并没有运行验收测试 - 验证代码是否处于良好状态以接受生产。所以我不担心嘲笑数据库。
我会选择其中一种方法:
为每次测试运行重新创建数据库,并根据需要使用适当的上下文填充
使用日期时间标记测试生成的数据,以便您可以将其与正常数据区分开来
制作服务器的模拟版本,它响应请求的固定响应,并指示应用程序使用它(可能仅使用命令行arg)。请注意,这仍然无法验证数据库是否一切正常。如果您只想显示错误处理,或者其他团队将负责生成服务,则可能是合适的。
希望这些想法能够帮助并提供各种选择!