nick_gabpe Asked:2020-03-28 22:15:46 +0000 UTC2020-03-28 22:15:46 +0000 UTC 2020-03-28 22:15:46 +0000 UTC 什么是存根? 772 什么是测试中的存根,它有什么用?例如:数据库存根。 тестирование 2 个回答 Voted Best Answer PinkTux 2020-03-28T22:30:12Z2020-03-28T22:30:12Z 存根是一种替代真实实体的实体,在这种情况下,它的工作并不重要。事实上,这是一件非常有用的事情,因为新手程序员经常尝试一次实现和调试所有组件,导致代码混乱,几乎无法遵循“鼻子朝外,尾巴朝外”的原则。 一个典型的例子是调试一些处理来自外部的数据的算法。如果假设手动输入,那么这也会给调试过程增加不必要的操作负担。与其立即写入输入,不如获取一些预制数据集(编写一个返回它的存根)更容易。并且只有在调试完程序的主要部分后,才能将存根变成真正的输入。 理想情况下,所有与当前调试的代码无关的实体都可以是存根,并根据“调试了一段-用代码替换了一个存根,调试了前一个存根-继续下一个”等方案在必要时进行了替换.d. Vladislav Khapin 2020-03-28T22:31:48Z2020-03-28T22:31:48Z Stub是一个对象,它模拟它所替换的对象的行为。C# 中的示例: interface IDatabaseContext { List<string> GetItems(); } 执行: class DatabaseContext : IDatabaseContext { public List<string> GetItems() { ...работа с базой данных } } 为了在测试使用此依赖项(接口)的对象时不使用真实数据库,您可以创建一个存根对象。这个存根将返回预定义的数据,并且接口的用户对象没有区别,因为它们将接收预期的数据,但不会依赖于真实的数据库。这是一个优点。 class StubContext : IDatabaseContext { public List<string> GetItems() { return new List<string>(){"temp1","temp2"}; } }
存根是一种替代真实实体的实体,在这种情况下,它的工作并不重要。事实上,这是一件非常有用的事情,因为新手程序员经常尝试一次实现和调试所有组件,导致代码混乱,几乎无法遵循“鼻子朝外,尾巴朝外”的原则。
一个典型的例子是调试一些处理来自外部的数据的算法。如果假设手动输入,那么这也会给调试过程增加不必要的操作负担。与其立即写入输入,不如获取一些预制数据集(编写一个返回它的存根)更容易。并且只有在调试完程序的主要部分后,才能将存根变成真正的输入。
理想情况下,所有与当前调试的代码无关的实体都可以是存根,并根据“调试了一段-用代码替换了一个存根,调试了前一个存根-继续下一个”等方案在必要时进行了替换.d.
Stub是一个对象,它模拟它所替换的对象的行为。C# 中的示例:
执行:
为了在测试使用此依赖项(接口)的对象时不使用真实数据库,您可以创建一个存根对象。这个存根将返回预定义的数据,并且接口的用户对象没有区别,因为它们将接收预期的数据,但不会依赖于真实的数据库。这是一个优点。