gpt4 book ai didi

c# - 可以为这个表达式求值器类的私有(private)方法编写单元测试吗?

转载 作者:行者123 更新时间:2023-11-30 19:37:10 26 4
gpt4 key购买 nike


我有以下代码

public interface IInterpreter
{
decimal Evaluate(string expression);
}

public class Interpreter : IInterpreter
{
public decimal Evaluate(string expression)
{
if (String.IsNullOrWhiteSpace(expression))
throw new ArgumentException("Parameter " + nameof(expression) + " cannot be empty");

var rpnExpression = ConvertToReversePolishNotation(expression);
return EvaluateReversePolishExpression(rpnExpression);
}
...
}

这个类将评估像“5+5*6”或“(3-5)*(2+2)+5”这样的表达式
现在我想写单元测试。这里唯一的公共(public)函数是 Evaluate,根据所有建议,只应测试此方法。
问题是我有一种强烈的感觉,ConvertToReversePolishNotation(expression) EvaluateReversePolishExpression(rpnExpression) 函数都必须包含单元测试...如果某些单元测试失败对于 Evaluate 方法,它不会指出错误在哪里(在 ConvertToRPNExpression 方法中或在 EvaluateReversePolishExpression 函数中)。

所以问题是 - 在这种情况下可以为私有(private)函数编写单元测试吗?

最佳答案

没有。

ConvertToReversePolishNotation 方法重构为一个单独的类。它关注的是皈依。

解释器关心的是评估。如果您“模拟”转换的输出,使用公共(public) Evaluate 方法应该很容易测试。

关于c# - 可以为这个表达式求值器类的私有(private)方法编写单元测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39080488/

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