首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在DivideByZeroException上进行Xunit测试

在DivideByZeroException上进行Xunit测试
EN

Stack Overflow用户
提问于 2022-09-26 14:27:49
回答 1查看 20关注 0票数 0

我是C#和Xunit测试的初学者。我有一套代码,表示一个除法方法。

代码语言:javascript
复制
 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);
            }
        }
    }

我试过这个单元测试,但没有通过。有人知道我该怎么处理这个吗?

代码语言:javascript
复制
 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);
        });
    }
EN

回答 1

Stack Overflow用户

发布于 2022-09-26 14:35:01

在catch块中尝试/捕获是一个非常糟糕的主意,它可以压缩异常。

代码语言:javascript
复制
try
{
    calculate.calculatorResult /= item;
}
catch (DivideByZeroException e)
{
    Console.WriteLine(e.Message);
}

是的,calculate.calculatorResult /= item;行可以抛出一个DivideByZeroException,但是由于编写catch块的方式,您的方法不可能抛出一个DivideByZeroException

如果仍然希望将异常写入控制台,则重新抛出异常。

代码语言:javascript
复制
try
{
    calculate.calculatorResult /= item;
}
catch (DivideByZeroException e)
{
    Console.WriteLine(e.Message);
    throw;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73855633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档