Успешные тесты в Visual Studio 2019, но неуспешные при использовании cli
У нас есть .NET Core 3.0
тестовый проект с около 603 тестовыми методами. Все они успешно выполняются при использовании обозревателя тестов в Visual Studio 2019. Эти тесты также выполняются на нашей машине сборки через dotnet cli. Здесь мы используем очень простойdotnet test
. Здесь несколько тестов терпят неудачу, все с одним и тем же сообщением:
Test method XyzUT threw exception:
System.InvalidOperationException: The calling thread cannot access this object because a different thread owns it.
...
Я пытаюсь понять, действительно ли это проблема с безопасностью потоков в тестовом коде или проблема с тем, как мы выполняем наши тесты через cli?
Если на самом деле это проблема потока на стороне кода, почему Visual Studio выполняет их все (всегда) успешно, а команда cli всегда дает сбой?
Я попытался запустить тесты с параметром распараллеливания, установленным на false:
dotnet test -p:ParallelizeTestCollections=false
Я надеялся добиться строго последовательного выполнения тестов таким образом. К сожалению, это не помогло.
Вот один из неудачных тестов:
[STATestMethod]
public void AutoscaleYAxisUT()
{
var privateViewModel = new UTPrivateObject( _viewModel );
var result = (Boolean)privateViewModel.Invoke( "AutoscaleAxis" );
Assert.AreEqual( true, result, FailMsgCtorValue( "true" ) );
}
Fyi UTPrivateObject
это наша собственная реализация класса MicroSoft PrivateObject. Нам пришлось реализовать это, так как подходящего класса вdotnet core 3.0