c# – 期望异常时应用Arrange-Act-Assert模式的最佳方法
作者:互联网
我正在尝试在编写单元测试时遵循Arrange-Act-Assert模式,我到了一个地方,我很困惑哪种方法会更好.我正在使用xUnit,我的第一个问题是:
//Arrange
int key = 1;
string value = "X";
//Act
board.Add(key, value);
var result = Assert.Throws<ArgumentException>(() => board.Add(key, value));
//Assert
Assert.IsType<ArgumentException>(result);
我的第二种方法是:
int key = 1;
string value = "X";
board.Add(key, value);
Assert.Throws<ArgumentException>(() => board.Add(key, value));
哪种方法更好?
编辑:
在wp.me/p4f69l-3z上发表了关于此的博文
解决方法:
你的第一个.Add电话应该是安排的一部分.将其视为行为的前提条件/设置.除此之外,您可以将Action包装在Action中以使其更好地读取:
//Arrange
int key = 1;
string value = "X";
board.Add(key, value);
//Act
Action addingSameKeySecondTime = () => board.Add(key, value);
//Assert
Assert.Throws<ArgumentException>(addingSameKeySecondTime)
评论中提到的FluentAssertions库使得这样的断言更加类似于句子:
int key = 1;
string value = "X";
board.Add(key, value);
Action addingSameKeySecondTime = () => board.Add(key, value);
addingSameKeySecondTime.ShouldThrow<ArgumentException>();
标签:c,unit-testing,xunit-net,arrange-act-assert 来源: https://codeday.me/bug/20190528/1173739.html