我是C#和Xunit测试的初学者。我有一套代码,表示一个除法方法。
public void Divide(CalculatorData calculate)
{
calculate.Operator = CalculatorOperator.Divide;
calculate.calculatorResult = calculate.inputNumbers[0];
for (int i = 1; i < calculate.inputNumbers.Length; i++)
{
decimal item = calculate.inputNumbers[i];
try
{
calculate.calculatorResult /= item;
}
catch (DivideByZeroException e)
{
Console.WriteLine(e.Message);
}
}
}我试过这个单元测试,但没有通过。有人知道我该怎么处理这个吗?
public void Divide_DivByZero()
{
//Arrange
calculatorData.inputNumbers = new List<decimal>() { 5, 0 }.ToArray();
Assert.Throws<DivideByZeroException>(() =>
{
//Act
calculatorManager.Divide(calculatorData);
var result = calculatorData.calculatorResult;
//Assert
Assert.IsType<decimal>(result);
});
}发布于 2022-09-26 14:35:01
在catch块中尝试/捕获是一个非常糟糕的主意,它可以压缩异常。
try
{
calculate.calculatorResult /= item;
}
catch (DivideByZeroException e)
{
Console.WriteLine(e.Message);
}是的,calculate.calculatorResult /= item;行可以抛出一个DivideByZeroException,但是由于编写catch块的方式,您的方法不可能抛出一个DivideByZeroException。
如果仍然希望将异常写入控制台,则重新抛出异常。
try
{
calculate.calculatorResult /= item;
}
catch (DivideByZeroException e)
{
Console.WriteLine(e.Message);
throw;
}https://stackoverflow.com/questions/73855633
复制相似问题