【发布时间】:2012-08-07 19:33:53
【问题描述】:
首先,让我说明我的真正问题:我有调用 ACS 管理服务的代码,我希望我的集成测试能够同时运行,而无需每个试运行重创了其他人。也就是说,由于多个人/构建服务器可能最终同时运行这些测试,如果他们都使用相同的 ACS 服务命名空间,则会出现并发问题。
我的想法是实现这一点的最简单方法是为每个测试运行程序生成新的、唯一的 ACS 服务命名空间——但据我所知,没有自动创建新服务命名空间(或管理客户端密钥)的方法)。我错了吗?有没有其他方法可以解决这个问题?
创建新服务命名空间的自动化方法会非常有用。
【问题讨论】:
-
我认为包含对服务的实际调用是单元测试中的一般错误。您是在测试您的代码,还是在测试 ACS 服务?如果你正在测试你的代码,最好的选择是模拟一些东西。现在我找不到最好的模拟点,但是针对实时网络/任何服务运行测试似乎不像测试代码,而是测试服务。你的测试失败的原因有很多,这不是你的代码的问题。想象一下失去互联网连接,想象一下临时服务不可用,想象一下网络超时,等等......
-
@astaykov 在他的问题中他指的是集成测试而不是单元测试
-
Astaykov,正如 Sandrino 所指出的,我说的是集成测试,而不是单元测试。所以,就像在其他形式的集成测试中你使用真实的,但不是生产数据库(想想使用 SQLite 而不是你的真实 SQL Server 实例来测试你所有的数据库调用/orm 映射/等),我正在使用真正的 ACS 服务命名空间,只是不是真正的生产命名空间,因为不幸的是,没有 ACSLite :)。