Как трассировка стека для моего модульного теста может не соответствовать фактическому источнику? - PullRequest
1 голос
/ 26 января 2010

В библиотеке классов C # и множестве тестов. Все шло хорошо, пока я не добавил новый набор тестов - они корректно работают на моей машине, но не работают на сервере TFS Build. Трассировка стека в журнале сборки не имеет смысла - кажется, что конструктор одного класса сопоставлен с одним из его методов.

Если мой класс выглядит примерно так:

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

Как это возможно?

1 Ответ

1 голос
/ 27 января 2010

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

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

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

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

...