11

以下のテストフィクスチャを参照してください。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;

/// <summary>
/// Tests relating to Harry Potter
/// </summary>
[TestFixture("Dumbledore")]
public class HarryPotterTests
{
    public string Name;

    public HarryPotterTests(string personName)
    {
        Name = personName;  
    }

    [Test]
    public void Test()
    {
        Console.WriteLine(Name);
    }
}

私が達成しようとしているのは、パラメーター化されたテストフィクスチャがどのように機能するかを確認することです。私は以前にそれらを使用したことがないので、これはそれで私の最初の刺し傷です。

それは私には大丈夫に見えます。文字列を持つコンストラクターであり、実際のテストフィクスチャ属性に文字列を渡します。コンパイルします。テストは単にそれをコンソールウィンドウに書き出すだけです。

ただし、テストは次のメッセージで失敗します。

No suitable constructor was found

私は盲目的に明白な何かを逃していますか?

ブレークポイントをどこに置いても、何もヒットしないため、非常に早い段階で失敗します。

4

7 に答える 7

20

私はこの問題を抱えていました。これは、コンストラクターパラメーターの問題ではなく、コンストラクターがエラーをスローしたことが原因でした。私の場合、エラーメッセージは誤解を招くものでした。

于 2013-11-06T11:44:13.323 に答える
14

私はこの問題を経験しました-NUnitの下でResharper8介してテストクラスを実行しました。

ただし、このフォームからTestFixture宣言を変更した場合

[TestFixture("CategoryName")]

このフォームに:

[TestFixture(Category="CategoryName")]

その後、それらは機能しました...これもNUnitを介して改善されました-しかし、私の特定のテストで発生するように、Resharperが支援するconnectionStringとEntity Frameworkの問題があり、NUnitは支援しません-しかし、基本的にNUnitは後者の構文の方が幸せだと思います。

于 2013-09-14T10:47:32.537 に答える
7

テストクラスは完全に有効であり、NUnitGUIとResharper7テストランナーの両方でNUnit2.6と.NET4を実行すると、Passedを返します。

表示されているエラーは、コンストラクターの引数TestFixtureのタイプがテストクラスコンストラクターのタイプと一致しない場合に発生します。たとえば、次の行を追加すると、次のようになります。

[TestFixture(10)]

NUnitGUIで次のエラーが発生します。

ParameterizedNunit.HarryPotterTests(10).Test:
ParameterizedNunit.HarryPotterTests does not have a suitable constructor
于 2012-07-12T08:23:14.590 に答える
4

この特定の問題は、JustCodeのNUnitTestRunnerのバグです。Resharper7のNUnitRunnerとNUnitGUIを使用してこれを再実行すると、どちらも合格です。

于 2012-07-17T09:08:29.867 に答える
2

コンストラクターに失敗する可能性のあるロジックがあるかどうかを確認します。にあるはずのコンストラクター(悪い!)に電話があったことがわかりましたTestFixtureSetUp。Resharperでは、これは、コンストラクターで例外がスローされた場合のパラメーター化されたテストフィクスチャのデフォルトのエラーメッセージです。

于 2013-05-30T08:33:31.277 に答える
0

かなり明白ですが、テストのコンストラクターが公開されていない場合にも発生する可能性があります。

于 2017-06-01T16:50:20.053 に答える
0

それが他の誰かを助ける場合に備えて。私の場合、TestFixtureSourceと、さまざまなTestFixtureの組み合わせを作成する関数を使用していました。配列内の要素の数がコンストラクターのパラメーターの数と一致しなかったことがわかりました。(-1を忘れました)

于 2018-02-01T16:57:23.847 に答える