[實作筆記] Github 結合 Stryker 作變異測試

前情提要

前年初次接觸變異測試,去年在看重構時偷換了概念,
將兩者結合了。

這次我想更進一步,將 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
2
3
4
-tp|--test-projects Specify what test projects should run on the project under test.
-p|--project-file <projectFileName> Used for matching the project references when finding the project to
mutate. Example: "ExampleProject.csproj"
-dk|--dashboard-api-key <api-key> Api key for dashboard reporter. You can get your key here: https://dashboard.stryker-mutator.io

專案設定

新增一個 stryker-config.json
對我來說,最重要的是要記得設定 stryker-config > reporters > dashboard 這筆資料。
詳細的說明的可以參考這篇

1
2
3
4
5
6
7
{
"stryker-config": {
"dashboard-project": "github.com/marsen/Marsen.NetCore.Dojo",
"dashboard-version": "master",
"reporters": ["json", "dashboard"]
}
}

在 Github 上工作

首先你必須在 Dashboard中 Enable Repository

Enable Repository

然後產生一組 Key

產生一組 Key

接下來到 Github , 我們將這組 Key 設定到 Secrets 之中

將 Key 設定至 Github

再到 Github Actions 中,把 workflow 指令設定完成,

Github Actions

觸發 CI 完成後,就可以在 Dashboard 上看到報表啦。

結果呈現

參考

(fin)

Please enable JavaScript to view the Gitalk. :D
Please enable JavaScript to view the LikeCoin. :P
Please enable JavaScript to view the LikeCoin. :P