Журнал для отладки при запуске Specflow в Azure PipelineC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Журнал для отладки при запуске Specflow в Azure Pipeline

Сообщение Anonymous »

В старой версии Specflow (3.0.0.0 и .NET Framework 4.7.2) я мог добавить Console.Writeline() в методы шага и запускать тесты через конвейер Azure на вкладке «Тест». Я могу добраться до неудавшихся тестовых случаев, и к каждому из них прилагается файл с именем Standard_Console_Output.log. В этом файле я вижу свои журналы, созданные с помощью Console.Writeline(). Это выглядит так:

Код: Выделить всё

When I do something
My custom logs
-> done ...
Теперь, в NET 6.0 и Specflow 3.9, этот подход больше не работает, Console.Writeline() ничего не генерирует в этом файле.
Как это сделать добавить журнал в этот выходной файл консоли? Спасибо.
Я добавил Console.Writeline() в свои шаги, и в файл Standard_Console_Output.log ничего не было добавлено.
ISpecFlowOutputHelper никогда не работает. Я следовал инструкциям документа и получил ошибку: System.InvalidOperationException: невозможно разрешить службу для типа «TechTalk.SpecFlow.Infrastructure.ISpecFlowOutputHelper»
Если я сам зарегистрирую ISpecFlowOutputHelper с помощью

Код: Выделить всё

services.AddSingleton();
Я получил сообщение об ошибке, в котором сообщается, что другой класс зависимостей не может быть разрешен. Это никогда не заканчивается...
Мне кажется, что документ Specflow устарел.
Минимальный пример кода
Я использую VS Professional 2022 (64-разрядная версия) 17.12.1 в Windows 10 и с расширением SpecFlow для VS 2022 (версия: 2022.1.91.26832).
Я создал этот пример проекта с расширением SpecFlow, шаблон поддерживает только .NET 6, но я изменил его на 8.0 вручную, отредактировав файл .csproj.

Код: Выделить всё



net8.0











./features/Calculator.feature

Код: Выделить всё

Feature: Calculator

@experimental
Scenario: Add two numbers
Given the first number is 50
Then the result should be 120
./StepDefinitions/CalculatorStepDefinitions.cs

Код: Выделить всё

using TechTalk.SpecFlow;
using System;
using Xunit;

namespace SpecFlowLogTest.StepDefinitions
{
[Binding]
public sealed class CalculatorStepDefinitions
{
[Given("the first number is (.*)")]
public void GivenTheFirstNumberIs(int number)
{
Console.WriteLine("The first number is " + number);

Assert.Equal(1, 2); // the Standard_Console_Output.log file is only attached when the test fails
}

[Then("the result should be (.*)")]
public void ThenTheResultShouldBe(int result)
{
//TODO: implement assert (verification) logic

throw new PendingStepException();
}
}
}
Я протестировал этот пример проекта в конвейере Azure, и в файле Standard_Console_Output.log содержимое гласит:

Код: Выделить всё

Given the first number is 50
-> error: Assert.Equal() Failure: Values differ
Expected: 1
Actual:   2 (0.0s)
Then the result should be 120
-> skipped because of previous errors
Я ожидаю: «Первое число — 50». Обратите внимание, что этот журнал не отображается даже при локальном запуске на моем компьютере.

Подробнее здесь: https://stackoverflow.com/questions/792 ... e-pipeline
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»