web-dev-qa-db-ja.com

NUnitまたはXUnitを使用している間にDotNetテストコマンドにパラメータを渡す方法

C#を使用してC#を使用してエンドツーエンドのテストを開発しています.Sety Core、Selenium、NUnit。これでログインテストケースを書きたいです。マイテストは、dotnet testコマンドを使用するだけでコンソールから開始されます。

私は単にユーザー名とパスワードをこのコマンドに渡し、それらをテストに入手したいです。 現時点では.NETコアをサポートしていないため、NUnit-Consoleを使用できません

この問題を解決するための提案された方法は何ですか?私はファイルに設定を保存しないのではなく、それらを直接コンソールに入力します。

ランセットファイルを避けたい場合は、この回避策を使用できます。パラメータを渡す推奨される方法の1つは、環境変数を介して行われます。それで、あなたのC#ヌナッツ(または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(FKA VSTSまたはTFS)のパイプラインからテストを起動したい場合は、秘密のマークを付けても、またはAzure KeyVaultから来ても、$(...)表記をインライン変数に単純に使用できます。 。

#In AzureDevops, 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)
 _

run Azure DevOps command task

4
realbart

残念ながら、dotnet testからnunitに設定を渡す唯一の方法は.runsettingsファイルを使用することです。 NUnitがdotnet testツールのカスタムコマンドライン引数を作成する方法はありません - 私たちはそこにいるのが好きですが!

.runsettingsファイル のサンプルを見て 。特定のビットが必要です。

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- Parameters used by tests at runtime -->
  <TestRunParameters>
    <Parameter name="webAppUrl" value="http://localhost" />
    <Parameter name="webAppUserName" value="Admin" />
    <Parameter name="webAppPassword" value="Password" />
  </TestRunParameters>
</RunSettings>

このファイルをdotnet testフラグを付けて-sに渡すことができるだけです。

dotnet test myProj.csproj -s mySettings.runsettings
2
Chris

このドキュメントでは、ランセットファイル内ではなく、コマンドラインで引数を渡すことが可能であることが示唆されています。

https://github.com/microsoft/vstest-docs/blob/master/docs/runsettingingsarguments.md

_dotnet test -- MSTest.MapInconclusiveToFailed=True MSTest.DeploymentEnabled=False
_

_--_の後のスペースに注意してください。

編集1

私のために働いたことは、ランセティファイルを追加してから、私がこの構文を使って、私が望んでいるパラメータを上書きしました。

dotnet test -- TestRunParameters.Parameter(name=\"myParam\", value=\"value\")

0
Space Monkey