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