这个链接(http://www.taimila.com/blog/ddd-and-testing-strategy/)说:“特性测试应该只依赖于应用层”,即表示层。
我试图了解BDD在使用Onion体系结构和TDD开发系统时是如何适应的。我买了一本书,它应该在周末到达。
我对洋葱和TDD的理解如下:
1)编写核心测试。然后开发内核,以便测试通过。
2)编写基础结构层的测试。然后开发基础设施层,以便测试通过。
3)编写应用服务层的测试。然后开发应用程序服务层,以便测试通过。
4)编写用户界面层的测试。然后开发用户界面层,以便测试通过
BDD在什么阶段适合?我的阅读是告诉我,BDD应该是终端机。例如,如果使用Specflow,那么步骤定义将访问控制器。例如(摘自此处:https://specflow.org/documentation/Step-Definitions/):
[When(@"I perform a simple search on '(.*)'")]
public void WhenIPerformASimpleSearchOn(string searchTerm)
{
var controller = new CatalogController();
actionResult = controller.Search(searchTerm);
}在这种情况下,BDD只在编写应用程序的最外层(用户界面)时才编写。
但是,我在这里还读到了一个团队,它只开发领域模型并将Specflow用于验收测试,即直接引用域模型的step定义(可能是错误的)。这在我的脑海中并不是永无止境的。
BDD特性是否用于测试以下所有层:
MyApplication.UI.AcceptanceTests - includes features and step definitions
MyApplication.ApplicationService.AcceptanceTests - includes features and step definitions
MyApplication.Infrastructure.AcceptanceTests - includes features and step definitions
MyApplication.Core.AcceptanceTests - includes features and step definitions或者您有一个引用UI的应用程序:
MyApplication.AcceptanceTests我做了很多网上搜索我的答案,但我没有找到它。例如,我在这里查看过:在集成测试和单元测试中使用Specflow场景,这里:在BDD外部(使用Specflow)和这里: BDD:何时/在哪里设置存根?
发布于 2018-03-10 08:19:20
为x编写测试,然后开发x,以便测试通过。
嗯,不,为x的一小部分写一个测试,然后开发-x的一部分,以便测试通过。重构。重复一遍。
BDD的不同之处在于,BDD并不在意,除非-x的一部分对最终用户是可见的。BDD希望测试集中在可见的结果上。
一些图表如下:

这些测试的主要区别在于它们与谁相关。单元测试与开发人员相关。验收测试与产品所有者相关。
至于层,这完全取决于您如何组织代码。BDD不关心层。层并不是产品负责人需要知道的东西。所以别让他们这么做。
https://softwareengineering.stackexchange.com/questions/367392
复制相似问题