I've been tearing my hair out for a week trying to figure out why I just cannot get my tests to run stably after upgrading to XUnit.v3.
I've kept getting intermittent torrents of this error in the test runner view:
NCrunch: This test was executed on server 'MANGES-LAPTOP'
This test was not executed during a planned execution run. Ensure your test project is stable and does not contain issues in initialisation/teardown fixtures.
With errors like these in the grid node logs:
System.Exception: Tried to finish a test that was not expected to be executed
at nCrunch.Module.XUnit3.ExecutionMessageSink.onTestCaseFinished(TestCaseFinished message)
at nCrunch.Module.XUnit3.ExecutionMessageSink.OnMessage(Object message)System.Exception: Tried to execute a test that was not expected to be executed: AccountId_is_empty(MicrosoftSqlServer:Microsoft)
at nCrunch.Module.XUnit3.ExecutionMessageSink.onTestCaseStart(TestCaseStarting message)
at nCrunch.Module.XUnit3.ExecutionMessageSink.OnMessage(Object message)Well believe I finally managed to isolate it, and as far as I can tell it is an NCrunch bug.
The below stack trace is from from the node manges-laptop. Its workspace path is c:\NCrunchGridMangesLaptop\workspace\
but it is trying to deserialize using an assembly from the path C:\NCrunchGridThreadRipper\workspace, which is on another grid node.
System.IO.FileNotFoundException: Could not load file or assembly 'C:\NCrunchGridThreadRipper\workspace\66888\69\Tests\Integration\bin\Debug\net9.0\Compze.Tests.Integration.dll'. The system cannot find the path specified.
File name: 'C:\NCrunchGridThreadRipper\workspace\66888\69\Tests\Integration\bin\Debug\net9.0\Compze.Tests.Integration.dll'
at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyPath(String assemblyPath)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at Xunit.v3.XunitTestAssembly.Deserialize(IXunitSerializationInfo info) in /_/src/xunit.v3.core/ObjectModel/XunitTestAssembly.cs:line 146
at Xunit.Sdk.XunitSerializableSerializer.Deserialize(Type type, String serializedValue) in /_/src/xunit.v3.common/Serialization/Serializers/XunitSerializableSerializer.cs:line 19
at Xunit.Sdk.XunitSerializer`1.Xunit.Sdk.IXunitSerializer.Deserialize(Type type, String serializedValue) in /_/src/xunit.v3.common/Serialization/XunitSerializer.cs:line 39
at Xunit.Sdk.SerializationHelper.DeserializeXunitSerializer(String serializedValue) in /_/src/xunit.v3.common/Serialization/SerializationHelper.cs:line 429
at Xunit.Sdk.SerializationHelper.Deserialize(String serializedValue) in /_/src/xunit.v3.common/Serialization/SerializationHelper.cs:line 337
at Xunit.Sdk.XunitSerializationInfo.GetValue(String key) in /_/src/xunit.v3.common/Serialization/XunitSerializationInfo.cs:line 79
at Xunit.Sdk.XunitSerializationInfoExtensions.GetValue[T](IXunitSerializationInfo info, String key) in /_/src/xunit.v3.common/Serialization/XunitSerializationInfoExtensions.cs:line 35
at Xunit.v3.XunitTestCollection.Deserialize(IXunitSerializationInfo info) in /_/src/xunit.v3.core/ObjectModel/XunitTestCollection.cs:line 115
at Xunit.Sdk.XunitSerializableSerializer.Deserialize(Type type, String serializedValue) in /_/src/xunit.v3.common/Serialization/Serializers/XunitSerializableSerializer.cs:line 19
at Xunit.Sdk.XunitSerializer`1.Xunit.Sdk.IXunitSerializer.Deserialize(Type type, String serializedValue) in /_/src/xunit.v3.common/Serialization/XunitSerializer.cs:line 39
at Xunit.Sdk.SerializationHelper.DeserializeXunitSerializer(String serializedValue) in /_/src/xunit.v3.common/Serialization/SerializationHelper.cs:line 429
at Xunit.Sdk.SerializationHelper.Deserialize(String serializedValue) in /_/src/xunit.v3.common/Serialization/SerializationHelper.cs:line 337
at Xunit.Sdk.XunitSerializationInfo.GetValue(String key) in /_/src/xunit.v3.common/Serialization/XunitSerializationInfo.cs:line 79
at Xunit.Sdk.XunitSerializationInfoExtensions.GetValue[T](IXunitSerializationInfo info, String key) in /_/src/xunit.v3.common/Serialization/XunitSerializationInfoExtensions.cs:line 35
at Xunit.v3.XunitTestClass.Deserialize(IXunitSerializationInfo info) in /_/src/xunit.v3.core/ObjectModel/XunitTestClass.cs:line 118
at Xunit.Sdk.XunitSerializableSerializer.Deserialize(Type type, String serializedValue) in /_/src/xunit.v3.common/Serialization/Serializers/XunitSerializableSerializer.cs:line 19
at Xunit.Sdk.XunitSerializer`1.Xunit.Sdk.IXunitSerializer.Deserialize(Type type, String serializedValue) in /_/src/xunit.v3.common/Serialization/XunitSerializer.cs:line 39
at Xunit.Sdk.SerializationHelper.DeserializeXunitSerializer(String serializedValue) in /_/src/xunit.v3.common/Serialization/SerializationHelper.cs:line 429
at Xunit.Sdk.SerializationHelper.Deserialize(String serializedValue) in /_/src/xunit.v3.common/Serialization/SerializationHelper.cs:line 337
at Xunit.Sdk.XunitSerializationInfo.GetValue(String key) in /_/src/xunit.v3.common/Serialization/XunitSerializationInfo.cs:line 79
at Xunit.Sdk.XunitSerializationInfoExtensions.GetValue[T](IXunitSerializationInfo info, String key) in /_/src/xunit.v3.common/Serialization/XunitSerializationInfoExtensions.cs:line 35
at Xunit.v3.XunitTestMethod.Deserialize(IXunitSerializationInfo info) in /_/src/xunit.v3.core/ObjectModel/XunitTestMethod.cs:line 132
at Xunit.Sdk.XunitSerializableSerializer.Deserialize(Type type, String serializedValue) in /_/src/xunit.v3.common/Serialization/Serializers/XunitSerializableSerializer.cs:line 19
at Xunit.Sdk.XunitSerializer`1.Xunit.Sdk.IXunitSerializer.Deserialize(Type type, String serializedValue) in /_/src/xunit.v3.common/Serialization/XunitSerializer.cs:line 39
at Xunit.Sdk.SerializationHelper.DeserializeXunitSerializer(String serializedValue) in /_/src/xunit.v3.common/Serialization/SerializationHelper.cs:line 429
at Xunit.Sdk.SerializationHelper.Deserialize(String serializedValue) in /_/src/xunit.v3.common/Serialization/SerializationHelper.cs:line 337
at Xunit.Sdk.XunitSerializationInfo.GetValue(String key) in /_/src/xunit.v3.common/Serialization/XunitSerializationInfo.cs:line 79
at Xunit.Sdk.XunitSerializationInfoExtensions.GetValue[T](IXunitSerializationInfo info, String key) in /_/src/xunit.v3.common/Serialization/XunitSerializationInfoExtensions.cs:line 35
at Xunit.v3.XunitTestCase.Deserialize(IXunitSerializationInfo info) in /_/src/xunit.v3.core/ObjectModel/XunitTestCase.cs:line 239
at Compze.Tests.Infrastructure.XUnit.PluggableComponents.PluggableComponentsTestCase.<>n__1(IXunitSerializationInfo info)
at Compze.Tests.Infrastructure.XUnit.PluggableComponents.PluggableComponentsTestCase.<>c__DisplayClass6_0.<Deserialize>b__0() in C:\Dev\Compze\src\Tests\Infrastructure\XUnit\PluggableComponents\PluggableComponentsTestCase.cs:line 53
at Compze.Utilities.SystemCE.VoidCEExtensions.<>c__DisplayClass1_0.<AsUnitFunc>b__0() in C:\Dev\Compze\src\Compze\Utilities\SystemExtensions\SystemCE\VoidCE.Extensions.cs:line 18
at Compze.Utilities.Logging.ExceptionLogger.ExceptionsAndRethrow[TResult](ILogger log, Func`1 func) in C:\Dev\Compze\src\Compze\Utilities\Logging\ExceptionLogger.cs:line 25
at Compze.Utilities.Logging.ExceptionLogger.ExceptionsAndRethrow(ILogger log, Action action) in C:\Dev\Compze\src\Compze\Utilities\Logging\ExceptionLogger.cs:line 35
at Compze.Tests.Infrastructure.XUnit.PluggableComponents.PluggableComponentsTestCase.Deserialize(IXunitSerializationInfo info) in C:\Dev\Compze\src\Tests\Infrastructure\XUnit\PluggableComponents\PluggableComponentsTestCase.cs:line 51
at Xunit.v3.XunitTestCase.Xunit.Sdk.IXunitSerializable.Deserialize(IXunitSerializationInfo info) in /_/src/xunit.v3.core/ObjectModel/XunitTestCase.cs:line 260
at Xunit.Sdk.XunitSerializableSerializer.Deserialize(Type type, String serializedValue) in /_/src/xunit.v3.common/Serialization/Serializers/XunitSerializableSerializer.cs:line 19
at Xunit.Sdk.XunitSerializer`1.Xunit.Sdk.IXunitSerializer.Deserialize(Type type, String serializedValue) in /_/src/xunit.v3.common/Serialization/XunitSerializer.cs:line 39
at Xunit.Sdk.SerializationHelper.DeserializeXunitSerializer(String serializedValue) in /_/src/xunit.v3.common/Serialization/SerializationHelper.cs:line 429
at Xunit.Sdk.SerializationHelper.Deserialize(String serializedValue) in /_/src/xunit.v3.common/Serialization/SerializationHelper.cs:line 337
at Xunit.Runner.InProc.SystemConsole.ProjectAssemblyRunner.Run(XunitProjectAssembly assembly, IMessageSink messageSink, IMessageSink diagnosticMessageSink, IRunnerLogger runnerLogger, ITestPipelineStartup pipelineStartup, HashSet`1 testCaseIDsToRun) in /_/src/xunit.v3.runner.inproc.console/Utility/ProjectAssemblyRunner.cs:line 258