日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

用ABP只要加人即可马上加快项目进展(二) - 分工篇 - BDD实战篇 - .NET Core里跑Specflow...

發布時間:2023/12/4 asp.net 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用ABP只要加人即可马上加快项目进展(二) - 分工篇 - BDD实战篇 - .NET Core里跑Specflow... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是<如何用ABP框架快速完成項目?>系列中的一篇文章。

?

BDD很贊!比TDD先進很多,能夠大大提高編碼效率。

?

上一篇文章說了如何在.NET Core里安裝Specflow. 然而文章成果只到了hello world級別。

要想真的和實際業務結合,比如要能夠IOC new class實例和能夠調用數據庫和第三方服務。用專業術語來說,就是能跑集成測試和單元測試。這就是這篇文章的目的了。

?

和.NET不一樣的是,.NET Core取消了App.config,并且整個機制都改變了。導致很多.NETer轉.NET Core的時候一臉懵逼

?

所以在.NET Core下運用BDD/TDD也不一樣了。這篇文章就講講如何配置。

?

  • 原來app.config一分為二,specflow部分劃為specflow.json,在這篇文章里有提到。其他劃為appsetting.json

  • 文件格式也從原來的xml文檔變為json文檔。

  • 同時還需要把appsetting.json文件屬性設置為如下

  • 讀取配置的方式也從原來的system.configmanager.appsetting變為?IConfigurationRoot[key]方式。示例代碼如下:

    ?

    1234567891011public?class?AppEnvConfiguration : ITransientDependency{????private?readonly?IConfigurationRoot _appConfiguration;???????????public?bool?IsEnableADFS =>?bool.Parse(_appConfiguration["ExternalAuth:WsFederation:IsEnabled"]);????public?AppEnvConfiguration(IAppConfigurationAccessor configurationAccessor)????{????????_appConfiguration = configurationAccessor.Configuration;????}}

      

  • ?

    Q&A:

  • 為啥集成測試里面數據庫返回結果數目總是0?

    答:檢查一下測試項目目錄\bin\Debug\netcoreapp2.1目錄下有沒有appsetting.json這個文件,沒有則看看有沒有做上面的第3步

  • ?

    通過以上步驟,終于可以調用數據庫和第三方服務來跑集成測試了。然而還有一個很大問題,單元測試跑不過啊!!!

    ?

    為什么會跑不過呢?

    因為BDD和TDD不一樣。

    TDD的Test case是可以直接繼承ABP里面的XXXTestBase基類的,這個基類里面提供了IOC new class實例等一系列很有用的方法。

    但是BDD的Specflow卻是Test Case和Step Definition分離的。在Step Definition里面是無法調用XXXTestBase基類里的這些方法的。

    ?

    那怎么辦呢?

    照如下步驟辦即可:

  • 新增一個TestBaseWrappers文件夾

  • 然后根據實際業務從最小化角度來建立TestBaseWrapper類

  • 在這個類里面寫IOC代碼

  • 然后再Step Definition類里調用這些TestBaseWrapper類。

  • ?

    Q&A:

  • 為什么不用Step Definition類直接繼承ABP里面的XXXTestBase基類呢?

    答:首先會報錯。然后我在這篇文章里面說到,我們只有一個Step Definition類,然后分布在多個文件,通過Partial關鍵字來組合。所以如果Step Definition這么大的一個類來直接繼承TestBase基類,然后在TestBase基類里構造函數來IOC初始化所有要調用Service類實例,第一會遇到性能問題,第二會遇到循環調用問題,這畫面太美不敢看啊。

  • 報錯:Message: System.InvalidOperationException : Mapper not initialized. Call Initialize with appropriate configuration. If you are trying to use mapper instances through a container or otherwise, make sure you do not have any calls to the static Mapper.Map methods, and if you're using ProjectTo or UseAsDataSource extension methods, make sure you pass in the appropriate IConfigurationProvider instance.如何解決?

    答:不要用MapTo擴展方法去Map,而要使用IObjectMapper,ABP官網十分清晰明確的說明了,要想用Unit Test就必須Always use IObjectMapper, do not use MapTo extension methods

    所以這道題是我面試必選題之一!!凡是在ABP項目里面使用MapTo擴展方法而不是使用IObjectMapper的,絕對是沒寫過單元測試的!這樣子一下就可以判斷出面試者有沒有寫過單元測試了!!!

  • 為啥你講了這么多測試方面的知識,開發的知識卻很少?

    答:因為:

  • 無論是TDD還是BDD,都是測試驅動,先寫測試代碼然后再寫業務開發代碼

  • 講ABP開發的文章太多,不缺我一個,然而講用ABP去做BDD/TDD的文章卻很少,很需要我去補充

  • 我現在自己創業,自負盈虧,不像很多開發人員,每月固定有工資,旱澇保收,可以放心的去空談理論。所以我一切以出活為主,以交付實際成果為第一目標,而不是以理論和空談為目標。BDD/TDD可以避免把寶貴的時間投入到項目實際上不需要的理論方面,可以保證我做的東西是客戶所想要的。所以我強烈推薦BDD這個核武器。

  • 在上一點里面我說出了核心,如何保證你所做的東西就是客戶想要的?這就是BDD與TDD相比,BDD最大的優點啦!!!畢竟,絕大多數情況下,業務人員會比開發人員更了解業務!


  • 原文地址:?https://www.cnblogs.com/adalovelacer/p/abp-quickly-delivery-16-run-specflow-at-dot-net-core.html

    .NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

    總結

    以上是生活随笔為你收集整理的用ABP只要加人即可马上加快项目进展(二) - 分工篇 - BDD实战篇 - .NET Core里跑Specflow...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。