首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单元测试-方法的测试是否应该验证其他方法的结果?

单元测试-方法的测试是否应该验证其他方法的结果?
EN

Software Engineering用户
提问于 2014-07-30 09:22:26
回答 2查看 370关注 0票数 1

在我编写代码单元测试时,困扰我的一件事是方法测试是否应该包括验证其他方法的结果?当然,公开的方法。让我们看看一个相当琐碎的例子:

代码语言:javascript
复制
public int Solve(string forumla)
{
    if (forumla.Contains("+")) 
    {
        return SolveAddition(formula);
    }
    if (forumla.Contains("-"))
    {
        return SolveSubstraction(formula);
    }
    throw new ArgumentException();
}

public int SolveAddition(string formula)
{
    var strings = formula.Split('+');
    if (strings.Length != 2)
    {
        throw new ArgumentException();
    }
    int firstFactor = int.Parse(strings[0]);
    int secondFactor = int.Parse(strings[0]);
    return firstFactor + secondFactor;
}

在这种情况下,Solve方法的测试应该只测试控制流,还是SolveAddition的每一种可能的场景?让我们假设,SolveAdditionSolveSubstraction有它们自己的测试。

换句话说,Solve的测试场景应该只包含以下内容:

  • 2+2
  • 2-2
  • 2:2

或还包括:

  • 2+2+2+2
  • 2-2-2-2
  • 马铃薯地鼠

诚挚的问候

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2014-07-30 09:26:18

不,单元测试应该测试它正在运行的东西,而不是其他东西。您可以假设此方法调用的任何其他方法都是正确的,因为它们必须有自己的单元测试。

如果这些助手方法中的一个是错误的,那么在运行另一个测试时,您会得到一个警告,而且由于您应该运行整个测试套件,并且只有在整个套件成功时才进行推送,所以第二次测试相同的东西只是浪费时间。

票数 9
EN

Software Engineering用户

发布于 2014-07-30 16:34:56

对于任何给定的代码段,最多应该有一个地方负责对该代码进行详尽的测试。

顺便说一句,可以有任何数字来测试它;你只是不想浪费精力,跑上一座成倍的大山。

对于您的示例,测试用例的最小集合是一个无效论坛列表,以及一个包含预期答案的有效公式列表。如果将加法和减法分开,这些列表在总体上不会变得更短。

因此,测试这三个功能的正确地方就是通过“解决方案”。

这样,当您决定需要处理'2 +3-1‘时,您只需将其从一个列表移到另一个列表。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/251679

复制
相关文章

相似问题

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