У меня есть библиотека с вспомогательными классами unittest. Я ссылаюсь на NUnit в этом проекте, но теперь Visual Studio считает, что этот проект является тестовым, и жалуется, что никаких тестов не обнаружено. Этот проект не предназначен для тестирования, это просто обычная стандартная библиотека .net, которая ссылается на NUnit.
Я хочу «убедить» визуальную студию, что это НЕ тестовый проект. Любые идеи?
Технические детали: это проект .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
Теперь обратите внимание, что визуальная студия меняет значок проекта на тестовый проект.
Помогите мне найти способ, чтобы визуальная студия НЕ считала этот проект тестовым, и убедитесь, что 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)
nunit.framework
. Привыкай к этому. - person Lex Li   schedule 15.09.2018<IsTestProject>
(PropertyGroup), которое вы можете добавить / установить в false в ваших файлах csproj. По крайней мере, кажется, что это случай из чтения некоторых проблем с github, связанных с различными тестовыми пакетами. Возможно, это поможет - person pinkfloydx33   schedule 15.09.2018<IsTestProject>
исправил исключение. Спасибо! Однако Visual Studio по-прежнему использует значок TestProject. Это просто визуально, поэтому я просто проигнорирую это;) Если вы опубликуете свое предложение в качестве ответа, я могу отметить его как таковое! - person Michiel Dulfer   schedule 16.09.2018