Как проверить, что NUnit Addin был загружен? - PullRequest
0 голосов
/ 02 февраля 2011

Насколько я могу судить, сборка, содержащая надстройку, должна находиться в C:\Program Files (x86)\NUnit 2.5.7\bin\net-2.0\addins.Я думаю, что моя сборка загружается, потому что мне нужно закрыть NUnit-gui, прежде чем я смогу заменить сборку в каталоге addins.Проблема, однако, в том, что я не вижу каких-либо эффектов надстройки (не вызывается ни один из обработчиков событий)

Итак как мне проверить, что мой надстройка была загружена? Я бы хотел пройтись с отладчиком, но я был бы очень доволен отладкой печати.Когда я попытался сделать File.WriteAllText(), надстройка не загрузилась, но не привела причины.Кроме того, как мне отладить процесс загрузки?

NUnit docs полезны, но в лучшем случае они голые, когда дело доходит до расширяемости и нетнет никакого intellisense, доступного для классов в NUnit.Core.

1 Ответ

1 голос
/ 07 февраля 2011

Вы должны использовать некоторую библиотеку трассировки, такую ​​как one , которую вы можете скачать здесь .Теперь вы можете украсить ваши соответствующие методы с помощью таких операторов:

using ApiChange.Infrastructure;
class MyAddin
{
   static TypeHashes myType = new TypeHashes(typeof(MyAddin);

   void RelevantMethod()
   {
       using (Tracer t = new Tracer(myType, "RelevantMethod"))
       {
           ....
           if(bLoaded == false)
             t.Error("Could not load adding because of {0}", reason);
       }
   }
}

Затем вы можете включить трассировку через переменную окружения _TRACE

set _Trace=debugoutput

DebugOutput можно просматривать с помощью инструмента SysInternals DbgView (без прикрепления просто запустите его и посмотрите следы).Или вы выполняете трассировку до файла

set _Trace=file

Файл трассировки находится там, где исполняемый файл, например, Nunit.exe.txt.Если вы установите _TRACE для некоторой случайной строки, она будет прослеживать помощь до консоли и OutputDebugString, чтобы помочь вам.

Почему эта библиотека трассировки?Это на самом деле единственный, который может отследить любое исключение, когда ваш метод оставлен.Это работает, когда метод содержит использование операторов для трассировки, как показано выше.Если вы на самом деле виноваты в том, что NUnit решил игнорировать ваш плагин, вы можете узнать об этом сейчас.Вывод будет выглядеть следующим образом:

* ApiChange.IntegrationTests.Diagnostics.TracingTests.Demo_Show_Leaving_Trace_With_Exception 18: 57: 46.665 03064/05180 <{{> ApiChange.Integration.TracingTests.SomeMethod 18: 57: 46.668 03064/05180 <{{> ApiChange.IntegrationTests.Diagnostics.TracingTests.SomeOtherMethod 18: 57: 46.670 03064/05180 <}} <ApiChange.IntegrationTestoTessOnt.NotImplementedException: Привет, это ошибка в ApiChange.IntegrationTests.Diagnostics.TracingTests.FaultyMethod () в ApiChange.IntegrationTests.Diagnostics.TracingTests.SomeOtherMethod () в ApiChange.Text.Demo_Show_Leaving_Trace_With_Exception () 18: 57: 46.670 03064/05180 <}} <ApiChange.IntegrationTests.Diagnostics.TracingTests.SomeOtherMethod Длительность 2ms 18: 57: 46.689 03064/05180Tege.Inti.cs.TracingTests.SomeMethod Длительность 24 мс </p>

Это позволит легко выяснить, почему ваш Addin вообще не использовался.И вам не нужен отладчик; -).

Ваш, Алоис Краус

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...