这是单元测试还是集成测试?我对此表示怀疑

时间:2014-08-08 18:15:30

标签: unit-testing

想象一下,我有一个方法可以将男性所有年龄都加在一个列表中,这种方法使用的方法只给男性。那样的话:

public int getMaleAgeSum(List<People> paramPeople)
{
    List<People> lstMalePeople = getMalePeople(paramPeople);

    return lstMalePeople.Sum(x=>x.Age);
}


public List<Poeple> getMales(List<People> paramPeople)
{
    return paramPeople.Where(x=>x.Genre == "M");
}

在这种情况下,我有两种方法,因为从列表中获取男性人员可能很有意思,我在第一种方法中使用此代码。

如果我测试第一种方法,我设置我的安排(我的测试用例)思考方法的回归,年龄,不考虑测试getMales方法是否给出了正确的人,因为为此我实现了测试这种方法。

同样在这种情况下,我在同一个类中有两个方法,但是例如,如果我使用另一个类的mothod,它真的具有与getMale相同的哲学,理论上我可以使用属性注入,但我认为是矫枉过正。

对我来说,集成测试是指在使用两段代码获得结果时测试正确的功能。我可以认为就是这种情况,两种方法共同作用于同一个目标。但是在这种情况下,它可以看作是复杂的,并且具有更多的功能,因为我有两种方法。

所以我的疑问是,这是集成测试和单元测试我需要属性注入,或者在这种情况下是单元测试,虽然我使用两段代码?

感谢。

对于我来说,集成更多的是两段代码但来自不同的部分。例如,当我有一个方法使用实体框架从数据库获取数据,然后我有一个方法来操纵信息。

但是

1 个答案:

答案 0 :(得分:2)

我通常会针对单个公共方法或属性编写单元测试。我只对执行该方法的结果感兴趣。如果在内部它调用其他方法,或者如果我需要设置一些属性来首先测试方法,它仍然是一个单元测试 - 我甚至命名我的测试(methodname)_condition_expectation所以我的意图是明确的。

当您将另一段代码的结果传递给经过测试的对象时,集成就会发挥作用,最常见的是通过注入。

集成测试可能是一个测试,以确保存储库类使用实体模型来存储值,单元测试将模拟实体模型并检查它是否已正确使用。

在你的例子中,我会为这两种方法编写单元测试,以证明他们能够做到他们想要的。编写测试以确保一个测试的结果传递到另一个测试中是十个无关紧要的。如果您知道第一个返回men而第二个返回另一个摘要,您已经知道将结果传递给下一个方法将起作用 - 因为您已经对其进行了单元测试。

无论如何,这是我的定义,希望有所帮助。