Как я могу сделать свой проект visual studio 2017 НЕ тестовым, пока ссылаюсь на NUnit? - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть библиотека с вспомогательными классами unittest.Я ссылаюсь на NUnit в этом проекте, но теперь Visual Studio считает этот проект тестовым и жалуется, что тесты не обнаружены.Этот проект не предназначен для тестирования, это обычная стандартная библиотека .net, которая ссылается на NUnit.

Я хочу «убедить» Visual Studio, что это НЕ тестовый проект.Есть идеи?

Технические подробности: проект является проектом .Net Standard 2.0, и я ссылаюсь на следующие пакеты NuGet:

  • Moq 4.10.0
  • Moq.AutoMock 1.2.0.111
  • NUnit 3.10.1

Я использую Visual Studio 2017 Enterprise версии 15.8.4

Пример использования этой библиотеки:

  public abstract class AutoMockerTestBase
  {
     protected AutoMocker AutoMocker { get; private set; }

     [SetUp]
     public virtual void SetUp()
     {
        AutoMocker = new AutoMocker(MockBehavior.Strict);
     }

     [TearDown]
     public virtual void TearDown()
     {
        AutoMocker.VerifyAll();
     }
  }

Чтобы воспроизвести проблему:

  • Добавьте в библиотеку проект библиотеки классов .net standard2.0.
  • Ссылка NUnit

Теперь обратите внимание, что Visual Studio меняет значок проекта на тестовый проект.

Помогите мне найти способ, чтобы Visual Studio НЕ думал, что этот проект является тестовым проектом, и убедитесь, что vs не пытается обнаружитьтесты в этом проекте.

РЕДАКТИРОВАТЬ: просматривая вывод "Тесты", я нашел это:

[16/09/2018 10:12:55 Warning] Exception NUnit.Engine.NUnitEngineException, Exception thrown discovering tests in C:\Users\me\Source\Repos\Shared\src\UnitTestHelpers\bin\Debug\netstandard2.0\Shared.UnitTestHelpers.dll
[16/09/2018 10:12:55 Warning] An exception occurred in the driver while loading tests.
[16/09/2018 10:12:55 Warning]    at NUnit.Engine.Runners.DirectTestRunner.LoadDriver(IFrameworkDriver driver, String testFile, TestPackage subPackage)
   at NUnit.Engine.Runners.DirectTestRunner.LoadPackage()
   at NUnit.Engine.Runners.TestDomainRunner.LoadPackage()
   at NUnit.Engine.Runners.DirectTestRunner.EnsurePackageIsLoaded()
   at NUnit.Engine.Runners.DirectTestRunner.Explore(TestFilter filter)
   at NUnit.Engine.Runners.MasterTestRunner.Explore(TestFilter filter)
   at NUnit.VisualStudio.TestAdapter.NUnit3TestDiscoverer.DiscoverTests(IEnumerable`1 sources, IDiscoveryContext discoveryContext, IMessageLogger messageLogger, ITestCaseDiscoverySink discoverySink) in D:\repos\nunit\nunit3-vs-adapter\src\NUnitTestAdapter\NUnit3TestDiscoverer.cs:line 90
[16/09/2018 10:12:55 Warning] Innerexception: System.IO.FileNotFoundException: Could not load file or assembly 'nunit.framework' or one of its dependencies. The system cannot find the file specified.
File name: 'nunit.framework'
   at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   at System.Activator.CreateInstance(String assemblyString, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo, StackCrawlMark& stackMark)
   at System.Activator.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo)
   at System.AppDomain.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)
   at System.AppDomain.CreateInstanceAndUnwrap(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)
   at System.AppDomain.CreateInstanceAndUnwrap(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)
   at NUnit.Engine.Drivers.NUnit3FrameworkDriver.CreateObject(String typeName, Object[] args)
   at NUnit.Engine.Drivers.NUnit3FrameworkDriver.Load(String testAssemblyPath, IDictionary`2 settings)
   at NUnit.Engine.Runners.DirectTestRunner.LoadDriver(IFrameworkDriver driver, String testFile, TestPackage subPackage)

1 Ответ

0 голосов
/ 15 сентября 2018

Если применить NonTestAssemblyAttribute на уровне сборки, это скажет NUnit, что это не тестовая сборка. Однако вам нужно проверить, предотвращает ли это ошибку при работе в Visual Studio.

...