NUnit または XUnit を使用しているときに dotnet test コマンドにパラメータを渡す方法 質問する

NUnit または XUnit を使用しているときに dotnet test コマンドにパラメータを渡す方法 質問する

私は、.NET Core、Selenium、NUnit を使用した C# を使用して、エンドツーエンドのテストをいくつか開発しています。今、ログイン テストケースを作成したいと考えています。テストは、コマンドを使用するだけでコンソールから開始されますdotnet test

このコマンドにユーザー名とパスワードを渡して、テストで取得したいだけです。現時点では.NET Coreをサポートしていないため、NUnit-Consoleは使用できません。

この問題を解決するための推奨される方法は何ですか? 設定をファイルに保存するのではなく、コンソールに直接入力することをお勧めします。

ベストアンサー1

runsettings ファイルを避けたい場合は、この回避策を使用できます。パラメータを渡すための推奨方法の 1 つは、環境変数を使用することです。したがって、C# nunit (または xunit) ファイルでは、次のようにすることができます。

// in mytest.cs
var user = Environment.GetEnvironmentVariable("TestUser");
var password = Environment.GetEnvironmentVariable("TestPassword");
var url = Environment.GetEnvironmentVariable("TestUrl");

環境変数を決定的に設定したくない場合は、セッションプロセスのみに一時的に設定できることを覚えておいてください。これを行う1つの方法は、単純なcmdファイルを作成することです。

#launchtests.cmd
setlocal
set TestUser='pete001'
set TestPassword='secret'
set TestUrl='http://testserver.local/login'
dotnet test mytest.csproj

さて、ここからが楽しい部分です。このすべての側面をパラメータ化できます。次のように変更できます。

#run wity launchtests.cmd pete001 secret 'http://testserver.local/login'
setlocal
set TestUser=%1
set TestPassword=%2
set TestUrl=%3
dotnet test mytest.csproj

または、Azure DevOps (旧 VSTS または TFS) パイプラインからテストを起動する場合は、変数がシークレットとしてマークされていたり、Azure KeyVault から取得されていたりする場合でも、$(...) 表記を使用して変数をインライン化できます。

#In Azure DevOps, variables not marked as secret are already added to the environment
set TestPassword=$(TestPassword)
dotnet test $(Build.SourcesDirectory)\MyCompany.MyProduct.UITests\MyTest.csproj --configuration $(BuildConfiguration) --collect "Code Coverage" --logger trx --results-directory $(Agent.TempDirectory)

Azure DevOps コマンド タスクを実行する

おすすめ記事