.NET自动测试长期运行的进程

时间:2011-11-03 23:39:38

标签: .net asynchronous automated-tests parallel-processing long-running-processes

我们希望对流程进行一些自动集成测试,该流程需要将数据发送到外部源,然后验证数据是否已在其网站上正确显示。

但是,可能需要几个小时才会在网站上显示数据。

传统NUnit或MSTest的问题在于测试将持续数小时等待结果。

我已经看到PNUnit可以使用 - 并行运行所有测试,但它对我来说似乎不是一个优雅的解决方案。如果有1000次测试怎么办?这不会在服务器上创建大量的进程/线程吗?以及如何跟踪所有这些。

所以有人解决了这个问题吗?你有没有成长解决方案,还是有开源解决方案呢?

4 个答案:

答案 0 :(得分:2)

通过分离测试数据插入和验证可以轻松解决此问题。只需将所有可用的测试数据加载到系统中,等待几个小时直到完成处理,然后执行验证测试。

答案 1 :(得分:1)

像PNUnit似乎是一个很好的解决方案。如果您担心服务器上的“进程/线程太多”,只需要限制PNUnit可以同时运行多少个测试(例如,Max N);测试完成后,安排下一个测试。我不断言PNUnit知道如何做到这一点;您可能必须实施此自定义。

答案 2 :(得分:0)

NUnit-Discuss Google Group目前正在讨论这个问题:http://groups.google.com/group/nunit-discuss/browse_thread/thread/645ecaefb4f978fa?hl=en

我希望这会有所帮助:)

答案 3 :(得分:0)

Martin,在我找到我的解决方案之前,对于单元测试,在我看来,你只想测试你可以控制的东西。以上更像是我称之为回归测试。我假设'他们'的网站是别人的网站。请问如果您遵循界面/集成的规则会发生什么,但屏幕上没有任何内容,而您可能或者可以对此做些什么可能是一个问题?而且,当他们改变他们的网站或算法时会发生什么?你最终需要根据他们做的糟糕的事情来编写代码。

如上所述,您可以将加载测试和验证数据测试分开。我承认我对PNunit一无所知,但简单地抛出线程并不能解决每次往返测试的3小时延迟。

如果你需要同步运行,你可以加载ClassInitialize()中的所有数据然后睡觉,直到验证并运行实际测试为止。

如果是我,我只有一个用于加载测试的测试项目,然后是一个用于在几个小时后验证结果的项目。让它同步似乎并不会给你带来很多好处,除了在测试结果之前确保先决条件通过,这也可以通过其他方式处理。