Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 这是单元测试还是集成测试?我对此表示怀疑_Unit Testing - Fatal编程技术网

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

Unit testing 这是单元测试还是集成测试?我对此表示怀疑,unit-testing,Unit Testing,假设我有一个方法,将列表中所有男性的年龄相加,这个方法使用一个只给出男性的方法。诸如此类: public int getMaleAgeSum(List<People> paramPeople) { List<People> lstMalePeople = getMalePeople(paramPeople); return lstMalePeople.Sum(x=>x.Age); } public List<Poeple> getM

假设我有一个方法,将列表中所有男性的年龄相加,这个方法使用一个只给出男性的方法。诸如此类:

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");
}
public int getMaleAgeSum(列出参数人员)
{
List lstMalePeople=getMalePeople(paramPeople);
返回lstMalePeople.Sum(x=>x.Age);
}
公共列表GetMeans(列出个人)
{
返回paramPeople.Where(x=>x.Genre==“M”);
}
在本例中,我有两种方法,因为从列表中获取男性可能很有趣,我在第一种方法中使用了这段代码

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

同样,在这个例子中,我在同一个类中有两个方法,但例如,如果我使用另一个类中的方法,它实际上具有与getMale相同的原理,理论上我可以使用属性注入,但我认为这是过分的

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

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

谢谢

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


但是,我通常会针对单个公共方法或属性编写一个单元测试。我只对执行该方法的结果感兴趣。如果它在内部调用其他方法,或者如果我需要设置一些属性来首先测试该方法,那么它仍然是一个单元测试——我甚至将我的测试命名为(methodname)\u condition\u expection,这样我的意图就很清楚了

当您将另一段代码的结果传递到被测对象时,集成就开始发挥作用,最常见的是通过注入

集成测试可以是确保存储库类使用实体模型存储值的测试,而单元测试可以模拟实体模型并检查其是否正确使用

在您的示例中,我将为这两种方法编写单元测试,以证明它们能够实现它们想要的功能。编写一个测试以确保一个测试的结果传递给另一个测试的结果是不相关的。如果您知道第一个返回man,第二个返回另一个摘要,那么您已经知道将结果传递到下一个方法将起作用,因为您已经对它进行了单元测试


这就是我的定义,希望能有所帮助。

我只是重新阅读了你的问题,看到你在嵌套这个方法,在这种情况下,这两种方法都将被视为单元测试——尽管测试年限之和可以让你在GetMeans方法上测试代码覆盖率。