您知道有什么xUnit框架允许并行运行测试,利用当今机器中的多个核心吗?
如果没有人(或少数人)这么做,也许是有原因的.是因为测试速度太快,以至于人们根本不觉得有必要对它们进行平分吗?
有什么更深层次的东西可以阻止在多个线程上分发(至少一些)测试吗?
发布于 2011-03-08 20:51:25
NUnit 2.5捆绑了允许并行运行测试的pNUnit。
这个版本包括pNUnit,一种用于分布式并行测试的扩展NUnit运行程序。pNUnit程序是在Codice软件上开发的,用于测试塑料单片机,并为NUnit做出了贡献。有关使用pNUnit的更多信息,请参见pNUnit站点。
JUnit端有平行junit和氨基。
发布于 2011-03-08 21:10:38
要回答您问题的第二部分:是否有更深层次的内容可以阻止在多个线程上分发(至少部分)测试?
很多代码只在单线程运行时才能工作。在编写程序时意外地产生资源争用和死锁是很简单的,前提是它们将是单线程运行的。这很好,因为大多数程序实际上都是单线程运行的。并行性是通过同时运行多个副本或不同的程序来实现的(web脚本就是一个常见的例子--许多用户访问单个页面意味着该页面同时运行的脚本副本很多)。
想象一个简单的“日志到文件”类。当您创建一个实例时,它将打开用于写入的文件,当您释放该实例时,它将关闭该文件。因此,第一个测试创建一个实例并开始运行一个测试。第二个测试在第二个线程中做同样的事情。并且失败,因为第二个实例无法获得对文件的写访问权。但是如果一次运行一个,所有的测试都会通过。
所有这些都可以进行编码,并且可以调整简单的示例以使其工作。但是对最初的程序来说,这样做可能是不必要的。对于许多人来说,必须编写线程安全代码才能运行单元测试是不合理的。因此,多线程单元测试应该仍然是一个可选的额外的。
发布于 2011-03-08 20:56:23
如果测试需要设置和查询数据库,则并行运行的测试将相互干扰,除非每个测试有一个单独的数据库并行运行。
https://softwareengineering.stackexchange.com/questions/56092
复制相似问题