我正在c#中开始一个新项目,我正在寻找一种可以帮助我进行突变测试的工具。我之前使用pitest在java中进行了突变测试,非常喜欢它。 现在我正在为C#寻找这样一个工具,我能找到的唯一工具要么在过去几年没有更新,要么仍在alpha / beta中 (cream,ninjaTurtles,Nester)。
是否有任何可靠的工具可以与2010年后出现的工具一起使用?
编辑: 有人可能会说这个问题与What mutation-testing frameworks exist? [closed]重复。只有这个问题目前已有8年历史,而且大多数讨论的工具都无法使用,因为大多数工具在过去6到8年内都没有更新过。
答案 0 :(得分:6)
我成功使用了以下Visual Studio 2013扩展:VisualMutator.Net。那是因为其他突变工具需要Visual Studio 2005或其他超级过时的软件/框架/等。
更多信息:http://visualmutator.github.io/web/
您基本上会得到如下所示的用户界面:
TestingExample.Tests
将会发生变异。您可能已经将项目结构化Project & Project.Tests
您可以访问以下变体列表:
ISD(ISK) - 超级/基本关键字删除
运算符在属于继承方法的重载方法中删除对基类方法的调用。
DMC - 委派方法更改
运算符将处理委派的方法更改为具有类似签名的另一方法。
DEH - 为事件处理更改委派的方法
操作员更改从错误处理添加或删除方法的调用。 EAM,
EMM - 访问者,修改方法更改
运算符将对类属性的调用更改为调用另一个相同类型的属性。 EHR -
异常处理程序删除
如果存在另一个catch或最后一个catch,则运算符将删除catch块。
EHC - 异常处理更改
运算符将catch块的主体更改为抛出捕获的异常。
EXS - 吞咽异常
运算符添加空块捕获(异常e),以便没有异常可以保留当前方法。
JTI,JTD - 此关键字插入,删除
如果存在具有相同名称的局部变量,则运算符添加或删除此关键字。
JID - 成员变量初始化删除(字段初始化删除)运算符删除
使用适当的值初始化类的字段。
MCI - 来自另一个继承类的成员调用
运算符将对方法的调用更改为在另一个对象上调用相同的方法。
PRV - 具有其他兼容类型的参考分配
操作员更改将某些对象分配给引用以分配另一个兼容对象。
标准运营商:
AOR - 算术运算符替换
操作员将算术运算(+, - ,*,/,%)更改为该组中的另一个。
LOR - 逻辑运算符替换
操作员将逻辑操作(&,|,)更改为该组中的另一个操作。
LCR - 更换逻辑连接器
运算符将逻辑表达式中的连接符(,||)更改为另一个。
ROR - 关系运算符替换
运算符将每个关系运算符(>,<,< =,> =,==,!=)更改为来自同一组的另一个运算符。
SOR - 移位操作员更换
操作员将逻辑移位(»,«)更改为相反的移位。
OODL - 操作员删除
操作员从每个操作创建两个突变体,例如+, - ,>,< =,%等。在一个操作中删除操作
并且左侧是什么,在另一个中它移除了操作,右侧是什么(例如从y = a + b;将有以下突变体:y = a;和y = b;)
SSDL - 声明阻止删除
运算符删除语句和赋值,但不删除声明(例如,从int y = 15;将有以下mutter:int y;)。
结果如下:
通过以下测试