2010-01-26 16 views
1

在一個C#類庫和一組測試中。一切都很順利,直到我添加了一組新的測試 - 它們在我的機器上正確運行,但在TFS構建服務器上失敗。構建日誌中的堆棧跟蹤毫無意義 - 一個類的構造函數似乎映射到其中一個方法。單元測試的堆棧跟蹤怎麼能不符合實際的源?

如果我的類看起來有點像這樣:

1. public class ClassToBeTested 
2. { 
3. 
4.  /// <summary> 
5.  /// Default constructor. 
6.  /// </summary> 
7.  public ClassToBeTested() 
8.  { 
9. 
10.  } 
11. 
12.  /// <summary> 
13.  /// Default constructor. 
14.  /// </summary> 
15.  public MethodToTest() 
16.  { 
17.   /* do stuff that throws exception */ 
18.  } 
19. 
20. } 

而且在我的單元測試類我有這樣的:

1. [TestMethod()] 
2. public void UpdateTest() 
3. { 
4.  ClassToBeTested Target = new ClassToBeTested(); 
5.  ClassToBeTested.MethodToTest(); 
6. } 

然後我的堆棧跟蹤表明這一點:

試驗方法unittestclass.UpdateTest拋出異常/不管/
ClassToBeTested.MethodToTest():第17行
unittestclass.UpdateTest():4號線

這怎麼可能?

+0

確定 - 這似乎是某種優化的bug /問題(只發生在發佈版本中,但是然後,我的測試不會在構建服務器上運行調試版)+1,並且可以爲任何可以提供MS引用的人接受答案。 – 2010-01-27 02:55:42

回答

1

我想拋出一個異常,可能有一些用它做的方法中的代碼。特別是如果東西在裏面有一個靜態構造函數: 或許這可以提供一些線索:

http://msmvps.com/blogs/jon_skeet/archive/2010/01/26/type-initialization-changes-in-net-4-0.aspx

但對於更多的幫助...也許是缺碼方法的詳細信息和/或異常類型。

還要檢查你的調試機器上生成配置相同的生成服務器..或嘗試測試發佈/發佈配置

+0

+1提醒我閱讀約翰的博客和有趣的可能性,即使這不是在這裏發生的事情。 – 2010-01-27 02:33:51