我们想做一些流程的自动化集成测试,需要将数据发送到外部源,然后验证数据已正确显示在他们的网站上。
然而,数据可能需要几个小时才能出现在网站上。
传统的NUnit或MSTest的问题是,测试将被搁置数小时等待结果。
我看到PNUnit可以用来并行运行所有的测试,但对我来说它似乎不是一个优雅的解决方案。如果有1000个测试呢?这不会在服务器上创建大量的进程/线程吗?以及如何跟踪所有这些。
那么有人解决这个问题了吗?你是自己开发了一个解决方案,还是有一个开源的解决方案?
通过将测试数据插入和验证分离,可以很容易地解决这个问题。只需将所有可用的测试数据加载到系统中,等待几个小时,直到处理完成,然后执行验证测试。
似乎PNUnit将是一个很好的解决方案。如果您担心服务器上的"进程/线程太多",只需限制PNUnit一次可以运行的测试数量(例如,最大N);当测试完成时,安排下一个测试。我不是说PNUnit知道怎么做;您可能需要实现这个自定义
现在在unit- discussion Google Group中有一个关于这个问题的讨论:http://groups.google.com/group/nunit-discuss/browse_thread/thread/645ecaefb4f978fa?hl=en
我希望这对你有帮助。
Martin,在我得到我的解决方案之前,对于单元测试,在我看来,您似乎只想测试您可以控制的东西。以上更像是我所说的回归测试。我假设"他们的"网站是别人的网站。我可以问一下,如果你遵循界面/集成的规则,但没有任何东西出现在他们的屏幕上,会发生什么,而这可能是一个问题,你会或能做些什么?此外,当他们改变他们的网站或算法时会发生什么?你最终需要根据他们的行为来编写代码,这很糟糕。
也就是说,就像上面提到的,您可以将加载测试和验证数据测试分开。我承认我对PNunit一无所知,但是简单地向它扔线程并不能解决每次往返测试的3小时延迟问题。
如果需要同步运行,可以在ClassInitialize()中加载所有数据,然后休眠,直到验证和运行实际测试的时间。
如果是我,我只会有一个测试项目用于加载测试,然后一个项目用于几小时后验证结果。让它同步除了确保在测试结果之前通过前置条件(也可以用其他方式处理)之外,似乎不会给您带来太多好处。