2012-04-05 1 views
7

次のように私は、テストクラスを持っ含むパラメータ化NUnitのTestFixtureで実行されるわけではありません:すべてのテストが配列

[TestFixture("someurl1", new[] { "param1", "param2" }, 15)] 
[TestFixture("someurl2", new[] { "param3" }, 15)] 
public class my_test 
{ 
    public my_test(string url, string[] fields, int someVal) 
    { 
     // test setup 
    } 
} 

ReSharperの6.1とNUnitの2.5.10でこのテストを実行する場合、テストは二回実行されていない、などを予期せず、一度だけ実行されます。テスト結果では、私はこれは私が2つの備品が同じとして扱われ、NUnitの2回のテストで文字列配列を区別されていないことをされていることを考えさせる

my_test("someurl1", System.String[], 15) 

を記載されている参照してください。

回避策として、コンストラクタにダミーパラメータを追加しました。これを各フィクスチャに対して異なる値に設定すると、すべてのテストが実行されます。

異なる値を含む配列でTestFixtureを使用することはできませんか?私はReSharper 5からアップグレードしたので、それが関連しているのだろうかと思っています。私は6.xでパラメータ化されたテストに関するいくつかの問題について読んだ。

+0

NUnitランナーで動作しますか? – Scroog1

+0

また、これが可能であるかどうかわからないので、パラメータ化されたテストフィクスチャを使用できることを指摘してくれてありがとう。 – Scroog1

+1

NUnitランナーで試したところ、すべてのテストが正常に実行されました。私はそれがReSharperのアップグレードに関連していると思う。 –

答えて

0

これは、TestFixtureコンストラクタの配列を新しくすることに関連していると思いますが、私はあなたがそれを行うことができない場所を読んでいます。

0

一般的なTestFixtureとして個々のテストを作成しようとしましたか?

[TestFixture] 
public class my_test 
{ 
    private bool my_test(string url, string[] fields, int someVal) 
    { 
     // test setup 
     return DidTestCompleteOk; 
    } 

    [Test] 
    public void TestURL1() 
    { 
     Assert.IsTrue(my_test("someurl1", new[] { "param1", "param2" }, 15)); 
    } 

    [Test] 
    public void TestURL2() 
    { 
     Assert.IsTrue(my_test("someurl2", new[] { "param3" }, 15)); 
    } 
} 
4
[TestFixture("someurl1", "param1|param2", 15)] 
[TestFixture("someurl2", "param3", 15)] 
public class my_test 
{ 
    private string[] _fields; 

    public my_test(string url, string fieldList, int someVal) 
    { 
     _fields = fieldList.Split('|'); 
     // test setup 
    } 

    [Test] 
    public void listFields() 
    { 
     foreach (var field in _fields) 
     { 
      Console.WriteLine(field); 
     } 
    } 
} 
0

ような何かがそれは何もパラメータ化テスト・フィクスチャのコンストラクタでうまくいかない場合は、これは絶対的なエラーメッセージです判明します。他のコードでstuffが失敗した場合のように、実際の例外情報は返されません。

セットアップコードを[SetUp]または[TestFixtureSetUp]に移動するか、コンストラクタがエラーなしで実行されていることを確認してください。しかし実際には、最初の提案をして、コンストラクタにテストフィクスチャのパラメータを保存し、別の方法でそれらを使って何かを行うだけです。

関連する問題