2012-01-10 60 views
0

我們使用VS 2008和Resharper 5.1(C#)和NUnit 2.4.8。Resharper Testrunner在沒有[TestFixture]的情況下運行一個類 - 爲什麼?

我有這個基本測試類進行確實具有[TestFixture]屬性:

public class BaseTestCasesFixture: BaseFixture 
{ 
    protected virtual int Calculate(DatePeriod period) 
    { 
     throw new NotSupportedException("Should be implemented by inheriter"); 
    } 

    [Test] 
    public void Test1() 
    { 
     Assert.That(Calculate(new DatePeriod(2006, 2, 28, 2007, 2, 28)), Is.EqualTo(361)); 
    } 

我有兩個後代的其從該基類繼承和實現該方法的兩個版本將被測試:

[TestFixture] 
public class RealTestCaseFixture1 : BaseTestCasesFixture 
{ 
    protected override int Calculate(DatePeriod period) 
    { 
     return period.DaysAsWeNeedThem; 
    } 

現在,當我跑我的構建服務器(竹)在這些測試中,似乎一切就好了工作 - 在Visual Studio中運行,但它們與ReSharper的5.1測試運行器,RS INSI上運行我的BaseTestCasesFixtureNO[TestFixture] !!)和悲慘STS失敗(15倍!)....

任何想法,爲什麼?這是一個Resharper Testrunner錯誤嗎?有誰知道是固定在6.0/6.1?

更新:剛剛與最新的RS 6.1測試 - 仍然是同樣的問題:-(

回答

2

如果我猜的話,在基類中的[測試]屬性足以讓ReSharper的到假設[的TestFixture]屬性,即使它不存在。NUnit的,作爲V2.5的,works the same way

設置的基類爲抽象可能會停止這種行爲。

+0

是的,這正是我得到的迴應來自ReSharper團隊,當時我爲這種行爲提出了一個錯誤 - 它按照設計工作,NUnit將運行該測試夾具,因此ReSharper也是如此。是的,我可以證實,將其抽象化會告訴ReSharper不要運行它。 – 2012-01-10 20:14:07

+0

是的,謝謝 - 這似乎做到了!我仍然認爲這是RS的一個錯誤,用來「執行」一個有**沒有標記過[TestFixture]屬性的類 - 用JetBrains提交了一個錯誤報告,我們會看看在這個問題上是否有任何事情可以完成。 – 2012-01-10 20:43:45

+0

@JoeWhite:奇怪 - 因爲在我的情況下,在**構建服務器**,NUnit不**運行該類,因爲它沒有標記[TestFixture] ..... – 2012-01-10 20:44:24

相關問題