より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

Azure DevOpsでNUnitのテスト実行が出来るようにする

はじめに

de:code2019でバンダイナムコの竹村伸太郎さんがAzureDevOpsの有用性について熱く語っておられたので再チャレンジすることにしました。

私のプライベートリポジトリは

  • BitBucket
  • TeamCity
  • SonarQube

でした。

BitBucketはWebページが重いですし、リポジトリとしては GitHubでもAzureDevOpsでも問題はありません。

TeamCityはローカルに構築してビルドとテストを動かしておかしくなっていないか確認します。

このローカルがネックで、CIのせいで開発中に重くなるという課題がありました。

わざわざローカルにTeamCityに構築しているのはこれまたローカルのSonarQubeに連携したいためでした。

SonarQubeはコードの静的解析を実行し、可視化するツールです。

が、SonarQubeは、ほとんど使われることはありません。たまにSonarQubeを動かすだけにして、CIによりローカルPCが重くなることを解決しようということにしました。

AzureDevOpsで良さそうなのですが、一つ課題があり、それがNUnitが動かないことでした。

リトライ

NUnitを動かせるように再挑戦してみます。

clown.hatenablog.jp

developercommunity.visualstudio.com

次のように、ビルドパイプラインにVisual Studioテストタスク(https://docs.microsoft.com/ja-jp/azure/devops/pipelines/tasks/test/vstest?view=vsts)を追加するだけです。

NUnitでもVSTestなのか。

docs.microsoft.com

で、やってみました。

f:id:rimever:20190531065045p:plain

一見成功したように見えましたが、テストコードが動いていないので失敗です。

以下のように修正しました。

- task: VSTest@2
  inputs:
    testSelector: 'testAssemblies'
    testAssemblyVer2: |
      **\*Test.dll
      !**\*TestAdapter.dll
      !**\obj\** 
    searchFolder: '$(System.DefaultWorkingDirectory)'

YAML 基本記法まとめ - Qiitaを参考にさせてもらったのですがデフォルトのYAMLが「'」でtestAssemblyVer2の値を囲んでいますが、|でスタートするのが正しいようです。

テストケースをカテゴリーでフィルタリングしたい場合は以下のように行います。

- task: VSTest@2
  inputs:
    testSelector: 'testAssemblies'
    testAssemblyVer2: |
      **\*Test.dll
      !**\*TestAdapter.dll
      !**\obj\** 
    searchFolder: '$(System.DefaultWorkingDirectory)'
    testFiltercriteria: 'TestCategory != BuildServerIgnore'

本格的に載せ替えてみて、さらに理解を深めてみようと思います。

今日はここまで。