2009-07-10 19 views
7

私はVisual Studio 2008でのResharper 4.5とMBUnitテストを使用していますが、ReSharpherを使用してテストを実行すると奇妙なことが起こります。Resharperは1つだけを選択したときにすべてのテストを実行します

クラスの横にアイコンがあり、それぞれのテストメソッドには[実行]と[デバッグ]オプションがあります。 「実行」を選択すると、単一のテストの結果が表示されます。しかし、テストにはかなりの時間がかかりました。

SQL Serverプロファイラを実行してコードを実行すると、選択したテストだけでなく、クラス内のすべてのテストが実行されていることに気付きました。実際にそれらをすべて実行している間に単体テストを実行しているように見える理由はありますか?

これは、すべての統合テストが実行されるのを待っていることになります。私はその再考を気にするだけですが、これを変更する方法はありますか?

+0

MBUnitテストを実行するのにGallioを使用していますか? –

+1

どのバージョンのGallioを使用していますか?以前のバージョンには、あなたが記述しているものと同様の動作を引き起こすバグがありました> –

+0

私はGallioをインストールしましたが、テストを実行するために使用するとは思いません。私はMBUnit exeを使っています。 VSがGallioを使用しているかどうかはどうすればわかりますか?インストールされているバージョンは3.0.0.179です。 – Brandon

答えて

5

が、私はちょうどこの今日遭遇し、私はこのバグの原因を実現しているかもしれないと思う、私は私の方法は、しかしTestSomethingPart2()を実行している、私はTestSomething()を実行すると、両方を実行するだろうと見ても同様

[TestMethod] 
    public void TestSomething() 

    [TestMethod] 
    public void TestSomethingPart2() 

ないだろうという名前でした。テストを実行するメソッド名に完全に一致するメソッドを指定すると、結論づけました。 2番目のテストの名前をTestPart2Somethingに変更した後、この問題は解決しました。

+0

これはかなり面白いです。他の誰かがこの問題を確認しましたか? –

+1

私のメソッド名がまったく違うにもかかわらず、私はこの動作に気づいた! –

+0

誰かが質問をしてから7年後に特定のバージョンの技術についてポイント・イン・タイムで回答を下げた人は...あなたはただばかだ –

0

エディタを右クリックすると、コンテキストメニューが表示され、そこからテストを実行およびデバッグできます。テストメソッド内を右クリックして、その単一のテストを実行またはデバッグします。テストメソッドの外側を右クリックすると、現在のファイルに含まれるテストクラス全体を実行またはデバッグできます。

+0

"(メソッド名)実行"と呼ばれるメソッド宣言の横にあるアイコンは実際には "クラス全体を実行"を意味しますか?それは非常に誤解を招くようです... – Brandon

+0

私はそれを書いていないので、私は本当に言うことができません。右クリックのコンテキストメニューは機能しましたか? –

+1

いいえ、それでも私は右クリックしてRun Unit Testsと言っても、そのすべてを実行しています。 – Brandon

0

ガッリオの現在のリリースではMbUnitの(とNUnitの)の単位テストランナーを含む内蔵サポート

Resharperメニューから、あなたのソリューション内の単体テストまたはすべてのテストを実行するオプションがあります。どのような、クールであることは、このためのキーボード・ショートカットがあるということです。

  • Altキー+ R、U、R - 現在のコンテキストから実行するテスト(あなたが[Test]レベルであれば、あなたがしている場合、それは、一つのテストを実行します[TestFixture]レベルでは、それはすべての固定具に走る)
  • Altキー+はR、U、Nは - !あなたのソリューションですべてのユニットテストを実行し、私は非常にお勧め

そのあなたアン現在ガッリオ、その後、 C:\ Program Files \ Jetbrains \ Resharper \ plugins \ binにチェックを入れ、そこにファイルをクリアしてください。その後、Gallioを再インストールしてください。

これを実行したら、VS2008を起動してResharper | Gallioプラグインがアクティブであることを確認するプラグインメニューこれにより、MbUnitのサポートが提供されます。

3

私はこれがChrisの投稿の下に表示されることを願っています。

私は同様の状況で、彼が気付いた行動を確認しました。

[TestMethod()] 
public void ArchiveAccountTest() 

[TestMethod()] 
public void ArchiveAccountTestRestore() 

ので、両方を実行することになる第一の方法を実行し、第二の実行はありません。私の2番目のメソッドをTestRestoreに改名し、問題は解決しました。

注:私はResharper 5.1を使用していますので、それでも問題はあります。

5

これはReSharper 5.1の問題であることが確認できます。

以下のサンプルコードからテストAを実行するには、すべてのテストが実行されます。テストABを実行します(Aを除くすべてが実行されます)。等:

[TestMethod] 
public void A() 
{ 
    Console.WriteLine("A"); 
} 

[TestMethod] 
public void AB() 
{ 
    Console.WriteLine("AB"); 
} 

[TestMethod] 
public void ABC() 
{ 
    Console.WriteLine("ABC"); 
} 

[TestMethod] 
public void ABCD() 
{ 
    Console.WriteLine("ABCD"); 
} 

[TestMethod] 
public void ABCDE() 
{ 
    Console.WriteLine("ABCDE"); 
} 

これを行うには年齢がかかりました。私はリモートデバッガを開発サーバーに接続していましたが、それは予想以上に頻繁に壊れていました...

これは、Containsの代わりにStartsWithを実行しているようです。 回避策は、別のテストメソッド名の名前で始まるテストメソッド名を持たないことです。

関連する問題