Мы используем XUnit 2.1.0 от NuGet с соответствующими исполнителями, консолью и visualstudio, как описано в документации здесь под заголовком "Выполнение тестов с Visual Studio" и соответствующим содержанием.
Я также использую Visual Studio 2015 Enterprise Update 2. Единственное, что достаточно устарело, это CSLA, мы на 4.0.1 (думаю, 5 лет?)
Когда мы запускаем любые тесты, требующие выборки DataPortal, тест падает, как только выборка DataPortal пытается быть отправлена на сервер. WCF выдает «System.ServiceModel.FaultException», в котором говорится: «Недопустимый токен для олицетворения — его нельзя дублировать». Важно отметить, что ни один из тестов не пытается выдать себя за другого пользователя. падение происходит в любом тесте, который пытается использовать CSLA для вызова DataPortal. Недавно мы перешли с xunit 1.x на 2.x через nuget, раньше мы запускали xunit из xunit runner при локальном тестировании наших тестов, но теперь это устарело. Все тесты прошли абсолютно нормально как через графический интерфейс, так и через консоль для xunit 1.x. Теперь мы должны использовать Visual Studio Runner с xunit 2.x, мы получаем это сумасшедшее исключение.
редактировать: если вы запускаете консольный бегун xunit 2.x из-за пределов визуальной студии, тесты также в порядке на 2.x, это часть визуальной студии, которая не работает.
Трассировка стека ниже:
Server stack trace:
at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)
at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at Csla.Server.Hosts.IWcfPortal.Fetch(FetchRequest request)
at Csla.DataPortalClient.WcfProxy.Fetch(Type objectType, Object criteria, DataPortalContext context) in D:\Dev\Insight\Trunk\Source\Lib\CSLA .NET\4.0\Source\Csla\DataPortalClient\WcfProxy.cs:line 162
at Csla.DataPortal.Fetch(Type objectType, Object criteria) in D:\Dev\Insight\Trunk\Source\Lib\CSLA .NET\4.0\Source\Csla\DataPortal.cs:line 245
at Csla.DataPortal.Fetch[T](Object criteria) in D:\Dev\Insight\Trunk\Source\Lib\CSLA .NET\4.0\Source\Csla\DataPortal.cs:line 170
Опять же, это отлично работает, если мы запускаем тесты из другого средства запуска тестов, например, старого средства запуска тестов xunit или CruiseControl.Net (мы используем CC.Net для непрерывной интеграции, и это отлично запускает тесты)