2

NUnit 3.0 を使用してテストを実行します。

私の問題は次のとおりです。テストを含むクラスがあり、このクラスのコンストラクターには、すべてのテストの前に実行されるメソッドがあります (コンストラクターにあるため)。このメソッドの実行中にエラーが発生し、CleanUpメソッドで処理します。このCleanUpメソッドではTestContext.CurrentContext.Result.Outcome.Status、プロパティを使用して、実行するテストのステータスを確認します。

問題は、テストがまったく実行されなかったことです(前提条件メソッドが失敗したため)。では、なぜこのプロパティがテストに合格したことを教えてくれるのでしょうか?

これが私のコードの一部です:

public class DepositSuccessTests
{
        //attributes

        public DepositSuccessTests(string device, WayToPay merchant)
        {    
            SetUp();
            try
            {
                Deposit_Money(merchant); // this method invokes an exception
            }
            catch (Exception e)
            {
                CleanUp();
            }
        }

        [Test]
        //Test that I run but that is not executed because of exception in the constructor
        public void Check_Transaction_Merchant_In_Transactions()
        {
            _orderVerifications.CheckTransactionMerchantInTransactions_Back(_merchant);
        }

        [TearDown]
        public void CleanUp()
        {
            //In the next line my test result is "Passed"
            if (TestContext.CurrentContext.Result.Outcome.Status == TestStatus.Failed)
            {
                //Do something
            }
            _driver.Dispose();
        }
}
4

2 に答える 2

2

Deposit_Money(merchant);が例外を引き起こしたとしても、それをキャッチしたので、ランナーに関する限り問題はなく、すべてのコードがエラーなしで通過しました。あなたは問題があったことを知っています、私は問題があったことを知っていますが、ランナーはそうではありません.

キャッチで明示的に失敗した場合、不合格としてマークされます。

  try
  {
     Deposit_Money(merchant); // this method invokes an exception
  }
  catch (Exception e)
  {
      Assert.Fail(); /// Explicitly fail the test
      CleanUp();
  }
于 2016-01-26T12:57:49.707 に答える
0

厳密に言えば、テストは実際に合格したため、テストで例外をスローできるようにする必要があります。

テストでエラー チェックを削除し、例外をスローできるようにすると、テスト結果が失敗として表示されるはずです。

于 2016-01-26T12:59:17.750 に答える