gpt4 book ai didi

c# - 如何用 FluentAssertions 替换 Assert.Fail()

转载 作者:太空狗 更新时间:2023-10-29 21:32:21 24 4
gpt4 key购买 nike

我们目前正在转换一些使用 Assert.IsTrue()Assert.AreEqual()Assert.IsNotNull() 的代码等 C# 的基本单元测试断言库

我们想使用 FluentAssertions,比如 value.Should().BeNull()。

我在某些位置使用 Assert.Fail() 进行了一些测试。我应该使用什么来有效地替换它们,因为我们想要取消每一个“Assert.*”,而我在 FluentAssertions 中找不到等效项?

举个例子

[TestMethod, TestCategory("ImportantTest")]
public void MethodToTest_Circumstances_ExpectedResult()
{
// Arrange
var variable1 = new Type1() { Value = "hello" };
var variable2 = new Type2() { Name = "Bob" };

// Act
try
{
MethodToTest(variable1, variable2);
// This method should have thrown an exception
Assert.Fail();
}
catch (Exception ex)
{
ex.Should().BeOfType<DataException>();
ex.Message.Should().Be(Constants.DataMessageForMethod);
}

// Assert
// test that variable1 was changed by the method
variable1.Should().NotBeNull();
variable1.Value.Should().Be("Hello!");
// test that variable2 is unchanged because the method threw an exception before changing it
variable2.Should().NotBeNull();
variable2.Name.Should().Be("Bob");
}

最佳答案

重组测试以利用 .ShouldThrow<>断言扩展。

[TestMethod, TestCategory("ImportantTest")]
public void MethodToTest_Circumstances_ExpectedResult() {
// Arrange
var variable1 = new Type1() { Value = "hello" };
var variable2 = new Type2() { Name = "Bob" };

// Act
Action act = () => MethodToTest(variable1, variable2);

// Assert
// This method should have thrown an exception
act.ShouldThrow<DataException>()
.WithMessage(Constants.DataMessageForMethod);
// test that variable1 was changed by the method
variable1.Should().NotBeNull();
variable1.Value.Should().Be("Hello!");
// test that variable2 is unchanged because the method threw an exception before changing it
variable2.Should().NotBeNull();
variable2.Name.Should().Be("Bob");
}

在上面的例子中,如果没有抛出预期的异常,断言就会失败,停止测试用例。

您应该查看 documentation on asserting exceptions更好地了解如何使用该库。

关于c# - 如何用 FluentAssertions 替换 Assert.Fail(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45035649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com