为什么要单元测试?

时间:2020-06-10 13:09:35

标签: unit-testing

我在理解单元测试的性质时遇到问题-为什么我应该一般地编写它们。让我们考虑以下代码:

public enum ObjectType
{
       TypeA = 0,
       TypeB = 1
}

public ObjectType Type;


public bool IsTypeB(ObjectType Type)
{
    bool result = false;
    If(Type = ObjectType.TypeB) 
    {
    result = true;
    }
    return result;
}

现在我的问题是,我应该对IsTypeB进行单元测试吗?如果是,那为什么呢?该方法的结果很明显,那么为什么要对其进行测试?我知道我的问题可能看起来很愚蠢,但是对我来说,创建单元测试似乎会使工作加倍,而没有明显的效果。我很难理解单元测试的真正效果是什么,何时使用它们以及在哪种方法/功能上。

感谢您提前回答,对于无知表示歉意

1 个答案:

答案 0 :(得分:1)

通常,测试的主要目标之一是发现错误。但是,还有其他查找错误的方法,例如静态代码分析。由于时间和成本的限制,实际上,您必须在不同方法之间找到平衡。测试琐碎的代码意味着可以花更少的时间来测试更复杂的功能。因此,将测试重点放在软件的更复杂的部分上可能是一个正确的决定。

通常,即使没有通过专门的测试明确指定目标,琐碎的功能(如getter和setter)仍然会受到测试:它们通常是测试代码中测试更复杂内容(例如,设置部分或测试的评估部分)。

以您的示例为例:似乎是您从未编译过的伪代码(If以大写字母开头),没有指定编程语言,因此怀疑是否有意义进行分析它,但是:

乍看之下,您创建的函数看起来很简单。但是,该功能可能有问题。 if的条件很可能应该是Type == ObjectType.TypeB。

知道了这一点,由您自己决定是否值得对该功能进行测试:该错误是否会导致编译错误(在某些语言中,代码将进行编译并具有定义的含义)?编译器警告您真正看过吗?一些静态代码分析警告有人真正看过吗?所有这些都有助于做出明智的决定。

相关问题