编程语言
首页 > 编程语言> > c# – 期望异常时应用Arrange-Act-Assert模式的最佳方法

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