Я написал несколько тестов с ядром dotnet 2. Эти тесты управляют некоторыми браузерами Selenium. Я разработал первый тест локально (с использованием dotnet core 2.0 и xunit), и он отлично работает.
Затем я переместил проект в конвейер Azure DevOps и получил эту ошибку:
System.PlatformNotSupportedException : Operation is not supported on this platform.
The following constructor parameters did not have matching fixture data
Похоже, что при локальной разработке (простой редактор VS Code) кто-то автоматически вставляет Fixture в такие конструкторы:
public AConstructor(TestFixture tf)
{
this.tf = tf;
}
поэтому я примерно переписываю это как:
public AConstructor(TestFixture tf)
{
this.tf = new TestFixture();
}
но проблема все еще существует, и я понятия не имею, в чем проблема. При локальной разработке мы настроили Selenium Grid с Docker, используя ту же версию реальной сетки. В конвейере Azure DevOps мы повторно использовали образец команды, используемый в локальной среде.
Любая идея?
Когда я делаю это, я обычно структурирую его так:
public class TestClass
{
protected TestFixture testFixture { get; set; }
public TestClass(TestFixture testFixture)
{
this.testFixture = testFixture;
}
}
Это позволяет вам создать локальный экземпляр для использования с вашим кодом.
Попробуйте это и дайте мне знать, работает ли это для вас.
Проверьте этот вопрос. stackoverflow.com/questions/39440942/… Возможно, это может пролить свет на это.
Этот также: stackoverflow.com/questions/43520648/…
Задайте параметру значение по умолчанию, чтобы исправить это.
public AConstructor(TestFixture tf = null)
{
this.tf = tf;
}
Настройка конвейера должна быть Интерактивный?