首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每层一个验收测试项目或每个有界上下文的一个验收测试项目

每层一个验收测试项目或每个有界上下文的一个验收测试项目
EN

Software Engineering用户
提问于 2018-03-09 16:41:33
回答 1查看 483关注 0票数 -1

这个链接(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/):

代码语言:javascript
复制
[When(@"I perform a simple search on '(.*)'")]
public void WhenIPerformASimpleSearchOn(string searchTerm)
{
    var controller = new CatalogController();
    actionResult = controller.Search(searchTerm);
}

在这种情况下,BDD只在编写应用程序的最外层(用户界面)时才编写。

但是,我在这里还读到了一个团队,它只开发领域模型并将Specflow用于验收测试,即直接引用域模型的step定义(可能是错误的)。这在我的脑海中并不是永无止境的。

问题

BDD特性是否用于测试以下所有层:

代码语言:javascript
复制
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的应用程序:

代码语言:javascript
复制
MyApplication.AcceptanceTests

我做了很多网上搜索我的答案,但我没有找到它。例如,我在这里查看过:在集成测试和单元测试中使用Specflow场景,这里:在BDD外部(使用Specflow)和这里: BDD:何时/在哪里设置存根?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2018-03-10 08:19:20

为x编写测试,然后开发x,以便测试通过。

嗯,不,为x的一小部分写一个测试,然后开发-x的一部分,以便测试通过。重构。重复一遍。

BDD的不同之处在于,BDD并不在意,除非-x的一部分对最终用户是可见的。BDD希望测试集中在可见的结果上。

一些图表如下:

这些测试的主要区别在于它们与谁相关。单元测试与开发人员相关。验收测试与产品所有者相关。

至于层,这完全取决于您如何组织代码。BDD不关心层。层并不是产品负责人需要知道的东西。所以别让他们这么做。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/367392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档