gpt4 book ai didi

c# - TDD:当方法根据输入返回不同结果时如何测试结果?

转载 作者:太空宇宙 更新时间:2023-11-03 20:30:24 25 4
gpt4 key购买 nike

比方说,我有这门课

public class MyClass
{
public int MyMethod(int? i)
{
throw new NotImplementedException();
}
}

我也有一个测试类

[TestClass]
public class MyClassTest
{
Public void Retur_Int_Greater_Than_Zero_When_Input_Is_Not_Null_And_Zero_Otherwise()
{
// Arrange
var myVar = new MyClass();
int? i = 3;

// Act
var result = myVar.MyMethod(i)

//Assert
//
}
}

我想检查 - 如果输入为 null 或 0,则结​​果必须为 0 - 如果输入既不为 null 也不为 0,则结​​果必须为该数字的绝对值。

我如何表达这些断言?

我可以这样写吗

if(i.HasValue)
{
//Define the Assert statement inside a If, else constructions...
}

感谢帮助

最佳答案

您将需要创建三个测试而不是一个来测试三个不同的场景

如果输入为空或0,则结果必须为0

// Act
var result = myVar.MyMethod(null)
//Assert
Assert.That(result, Is.EqualTo(0));

// Act
var result = myVar.MyMethod(0)
//Assert
Assert.That(result, Is.EqualTo(0));

如果输入不为 null 或 0,则结​​果必须是该数字的绝对值。

// Act
int graterThatZero = 1;
int absoluteValue = //define it here;
var result = myVar.MyMethod(graterThatZero)
//Assert
Assert.That(result, Is.EqualTo(absoluteValue));

同样使用来自 NUnit 的 TestCase 属性

[TestCase(null,0)]
[TestCase(0,0)]
[TestCase(1, 1 /* absolute value */)]
[TestCase(-1, 1)]
public void MyMethod_should_return_absolute_value(int? argument, int expectedResult)
{
// Arrange
var myVar = new MyClass();
// Act
var result = myVar.MyMethod(argument)
// Assert
Assert.That(result, Is.EqualTo(expectedResult));
}

关于c# - TDD:当方法根据输入返回不同结果时如何测试结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7829910/

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