2010-01-26 5 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

OK - Это, кажется, какая-то ошибка оптимизации/проблема (бывает только в выпуске, но тогда мои тесты не запускаются в отладке на сервере сборки) +1 и принятый ответ для тех, кто может предоставить ссылку от MS. –

ответ

1

Я думаю, что код внутри метода, который генерирует исключение, может иметь какое-то отношение к нему. особенно если что-то есть имеет статический конструктор: , возможно, это может пролить некоторый свет:

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

, но и для получения дополнительной помощи ... возможно недостающие детали метод кода и/или тип исключения.

Также проверьте, что ваша конфигурация сборки на отладки машины так же, как ваш сервер сборки .. или попробуйте протестировать в публикации/конфигурации выпуска

+0

+1 для напоминания мне прочитать блог Джона и интересную возможность, даже если это не то, что здесь происходит. –