前情提要
前年初次接觸變異測試,去年在看重構時偷換了概念,
將兩者結合了。
這次我想更進一步,將 CI Server 與之結合。
Stryker.Net
根據 Stryker Handbook,
Stryker 主要有三個專案,
- Stryker (Javascript & TypeScript)
- Stryker4s (Scala)
- Stryker.NET (.NET)
我會使用我的練習用專案作為目標,
所以很理所當然的我會選擇 Stryker.NET
,那我們就開始吧。
開始
安裝 Stryker
1 | dotnet tool install -g dotnet-stryker |
執行 Stryker
1 | dotnet stryker -tp "['./test/Marsen.NetCore.Dojo.Tests/Marsen.NetCore.Dojo.Tests.csproj','./test/Marsen.NetCore.Dojo.Integration.Tests/Marsen.NetCore.Dojo.Integration.Tests.csproj']" -p="Marsen.NetCore.Dojo.csproj" -dk=$STRYKER_DASHBOARD_API_KEY |
注意幾個 cli 參數,-tp
明確指定測試的專案有哪些,可以用中括號[]
傳入多個測試專案名稱,使用,
作為分隔符-p
專案名稱-dk
dashboard-api-key 這組 key 是用來與 https://dashboard.stryker-mutator.io/
互動的,
最主的功能是將報告上傳。
$STRYKER_DASHBOARD_API_KEY 是 Github 的 Secrets
你可以執行 dotnet stryker -h
查看更多原始說明
1 | -tp|--test-projects Specify what test projects should run on the project under test. |
專案設定
新增一個 stryker-config.json
對我來說,最重要的是要記得設定 stryker-config > reporters > dashboard
這筆資料。
詳細的說明的可以參考這篇
1 | { |
在 Github 上工作
首先你必須在 Dashboard中 Enable Repository
然後產生一組 Key
接下來到 Github , 我們將這組 Key 設定到 Secrets 之中
再到 Github Actions 中,把 workflow 指令設定完成,
觸發 CI 完成後,就可以在 Dashboard 上看到報表啦。
參考
- https://blog.marsen.me/2019/03/01/2019/book/refactoring/refactoring_Ch1/
- https://blog.marsen.me/2018/03/20/2018/mutation_testing/
- https://github.com/stryker-mutator/stryker-handbook/blob/master/dashboard.md
- https://github.com/stryker-mutator/stryker-net/blob/master/docs/Reporters.md#dashboard-reporter
(fin)