C#史崔克突变框架



我是测试和编写单元测试的新手。我发现了一个叫做史崔克的突变框架。我喜欢它,因为我正在用它编写更好的测试用例,这有助于我涵盖所有用例。

在一些测试用例突变中,我遇到了相等突变或字符串突变。我很困惑这些是什么?

示例

if (file.Length < 10) // Equality Mutation Here
{
throw new ArgumentException("The file name was too short", "file"); // String Mutation Here with the filename is too short
//throw new System.IO.FileNotFoundException();
}

这些是什么?为什么它会给我?有什么意义吗?

我知道我的问题可能是非常初学者的水平。

我很高兴突变测试可以帮助您学习单元测试,这也是我帮助构建Stryker的原因之一。要回答您对这个特定案例的问题:

if (file.Length < 10) // Equality Mutation Here
{
throw new ArgumentException("The file name was too short", "file"); // String Mutation Here with the filename is too short
//throw new System.IO.FileNotFoundException();
}

我们将<突变为<=>,看看您是否为文件长度==9文件长度==10

我们对字符串进行变异,看看您是否在测试中检查了字符串的值。例如,您可以测试异常中的消息是否正确。

如果您对史崔克还有任何疑问,请查看文档或查看这篇精彩的博客文章:https://medium.com/swlh/mutation-tests-in-net-via-stryker-9fd9e8e4bcde

如果您认为文档不足,请提交一个我们可以改进的问题!

你看到文档了吗?https://github.com/stryker-mutator/stryker-handbook/blob/master/mutator-types.md

更具体地说:

  1. https://github.com/stryker-mutator/stryker-handbook/blob/master/mutator-types.md#equality-操作员

当前比较运算符与众多可用(>,<,>=,<=,==,!=(之一之间的相等突变

  1. https://github.com/stryker-mutator/stryker-handbook/blob/master/mutator-types.md#string-文字

字符串赋值器基本上会更改一个字符串。如果您抛出消息"Exception because X"的异常,它可能会将消息更改为不同的"Exception because Y""A completely different message"

IMHO字符串突变体通常是无用的。我从不断言字符串消息(我依赖异常类型(,但Equaly Mutator是中最经典、最简单、最有用的赋值器之一

最新更新