2013-09-26 119 views
0

在我的項目中,我重載了函數GetPrimeList(int max)和GetPrimeList(long max)。nUnit測試中的不同結果 - 運行vs調試

GetPrimeList(int max)被正確實現,但是隻要參數在10以下的時候參數失敗(此時);

我已經寫了測試

[TestCase(1, 0)] 
[TestCase(3, 1)] 
public void GetPrimeList_ShouldReturnAllPrimesBelowGivenNumber(int max, int result) 
{ 
    var primes = PrimeHelper.GetPrimeList(max); 
    Assert.AreEqual(result, primes.Count); 
} 

[TestCase(1, 0)] 
[TestCase(3, 1)] 
public void GetPrimeList_ShouldReturnAllPrimesBelowGivenNumber(long max, int result) 
{ 
    var primes = PrimeHelper.GetPrimeList(max); 
    Assert.AreEqual(result, primes.Count); 
} 

現在,當我運行在正常模式下,他們全部通過測試,但是當我在調試模式下運行,測試長期爭論失敗(如預期)。

有單獨的測試項目;當我在原始項目中調用函數時,我無法重現行爲(嘗試比較發佈和調試模式)。我也試過在我的測試項目中關閉代碼優化,但並沒有解決問題。

任何想法如何解決我的測試項目?

+0

你可以嘗試重新命名最後一個「GetPrimeList_ShouldReturnAllPrimesBelowGivenNumber」類似「GetLongPrimeList_ShouldReturnAllPrimesBelowGivenNumber」並再次檢查它?只是覺得它可能很重要。我的假設是,在正常模式下不會調用最新的測試。 –

+0

我會添加日誌功能。如果您沒有在解決方案中使用日誌框架,請添加一些'Trace.Write'並將其記錄到文件中。 – oleksii

+0

@mt_serg:你說得對,它解決了一個問題。你可以正常發佈你的答案,所以我可以將其標記爲已解決? – Zaphood

回答

1

你可以嘗試重新命名最後一個「GetPrimeList_ShouldReturnAllPrimesBelowGivenNumber」類似「GetLongPrimeList_ShouldReturnAllPrimesBelowGivenNumber」並再次檢查它?只是覺得它可能很重要。我的假設是,在正常模式下不會調用最新的測試。