Утверждение.Equals терпит неудачу при сравнении одного и того же типа

#c# #unit-testing #testing

#c# #модульное тестирование #тестирование

Вопрос:

Я столкнулся с проблемой, когда тест завершается неудачно при запуске, но завершается успешно при взломе теста.

 Assert.Equals(typeof(Plugin.Plugin), plugin.GetType());
  

При выполнении теста идентификаторы guid отличаются. Вызов typeof возвращает идентификатор guid со всеми нулями, в то время как GetType имеет ожидаемый идентификатор guid. Если я установлю точку останова для этой строки, идентификаторы guid совпадут. Кто-нибудь сталкивался с этим? Они оба происходят из одной и той же сборки, поэтому они оба должны совпадать. Для этого используется .net 461

Спасибо.

Комментарии:

1. Вы уверены, что переменная плагина является экземпляром класса плагина, а не экземпляром производного класса?

2. Нет, я уверен, что это так. Группа коллег на работе посмотрела на это, и мы не можем понять, почему это происходит. Возвращенная система. Тип точно такой же, с той разницей, что идентификатор guid равен нулю. Та же сборка C #, без COM или чего-то необычного. Я обошел это, сравнив полное имя, но я хочу быть уверенным, что я не маскирую проблему, делая это.

3. Вероятно, вам следует использовать Assert.AreEqual Assert.Equal или Test.If.Value.IsEqual для начала, в зависимости от используемой вами среды модульного тестирования. Assert.Equals никогда не должно работать.