спасибо! Сделал как вы сказали, обратил внимание на пути этих файлов…Всё заработало.
привет, а как изменить имя тест-кейса уже в самом аллюре?
можно для этого использовать AllureLifecycle.Instance? или можно как-то иначе?
Привет.
Имя тест-кейса берётся из названия тест-кейса в NUnit.
Для его изменения нужно использовать [TestCase]
или [TestCaseSource]
атрибуты, как вариант.
[TestCase(TestName = "Verify method positive scenario")]
public void VerifyTestPos()
{
_driver.Navigate().GoToUrl("http://ya.ru");
AllureLifecycle.Instance.Verify.That("5 is greater than 1", 5, Is.GreaterThan(1));
AllureLifecycle.Instance.Verify.That("5 is greater than 2", 5, Is.GreaterThan(2));
}
Всем привет.
Есть проект c#+Nunit3+Specflow+SpecFlow.xUnitAdapter(для того что бы отказаться от кодогенерации в feature)
В итоге конфиг:
<specFlow>
<unitTestProvider name="NUnit" />
<plugins>
<add name="SpecFlow.xUnitAdapter" type="Runtime" />
<add name="Allure" type="Runtime" />
</plugins>
<stepAssemblies>
<stepAssembly assembly="Allure.SpecFlowPlugin" />
</stepAssemblies>
</specFlow>
Запускается это все через XUnit.Console-2.3.1
Не знаю можно ли прикрутить сюда алюр.
Поставил SpecFlow.Allure 2.3.67.1 из Nuget.
Поставил конфигу алюра:
Copy to output directory : Copy always
При запуске получаю:
System.TypeInitializationException : Инициализатор типа "Allure.SpecFlowPlugin.AllureTestTracerWrapper" выдал исключение.
---- System.IO.FileNotFoundException : Файл 'C:\Users\iamfr\AppData\Local\Temp\c8627d1b-6dff-4bb2-bf03-b31663b9ec72\c8627d1b-6dff-4bb2-bf03-b31663b9ec72\assembly\dl3\44c09a6d\00433b64_4a25d401\allureConfig.json' не найден.
Stack Trace:
Could not find a source mapping.
в Allure.SpecFlowPlugin.AllureTestTracerWrapper..ctor(ITraceListener traceListener, IStepFormatter stepFormatter, IStepDefinitionSkeletonProvider stepDefinitionSkeletonProvider, SpecFlowConfiguration specFlowConfiguration)
----- Inner Stack Trace -----
в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
в System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
в System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
в System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost)
в System.IO.File.InternalReadAllText(String path, Encoding encoding, Boolean checkHost)
в Allure.Commons.AllureLifecycle..ctor(String jsonConfigurationFile)
в Allure.Commons.AllureLifecycle..ctor()
в Allure.Commons.AllureLifecycle.get_Instance()
в Allure.SpecFlowPlugin.AllureTestTracerWrapper..cctor()
Непонятно что это за путь, в котором он ищет конфиг. Есть у кого ни будь мысли по этому поводу или может кто уже сталкивался с этим?
аллюр этот вообще для дотнета какой-то нестабильный
если я тесты из студии запускаю, он как раз хочет в темп каталог класть результаты, если из консоли, то нормально генерирует туда, куда указано в аллюр конфиг джсон
попробуйте так запустить тесты локально, dotnet test projectname --filter testname, по идее, он должен сбилдить проект, запустить тест и генерить отчёт куда вы требуете
меня попросили в отчёт складывать версию приложения, которую я беру из футера
по итогу сейчас я ее кладу через allurelifecycle.instance.fixtureupdate(x => {x.name += appversion})
вроде так
В моей сборке вы можете это делать в секции Environment.
честно, сколько времени было потрачено на аллюр, что ничего менять уже не хочется, работает и ладно
Не знаю, с какими трудностями вы столкнулись, по-моему все работает хорошо, достаточно один раз правильно настроить.
Не смущает, что юнит тест провайдер nunit в конфиге? Вроде как запускаете xunitом
Я использую ранер xUnit для того что бы не нужно было билдить проект при добавлении *.feature.
С помощью xUnit и плагином для него, это стало возможно.
Почему я решил что можно использовать nunit в этой связке в качестве unitTestProvider - о такой возможности пишет автор плагина. И это работает, *.feature файлы находит, тесты запускаются, асерты nunit работают
Это для net core? У меня не core проект
Тогда это магия и не относится к этой теме
В смысле это вопрос к оригинальгному плагину, который читает путь allureConfig.json из Assembly.Location.
Вполне вероятно XUnit.Console по-своему раскидывает файлы - можно по тому пути руками подбросить json, если этот путь не динамический.
Динамический)
Проблема поиска конфига для аллюра вне папки сборки проекта решена давно - Ability to store the configuration file in the specified directory · Noksa/Allure.NUnit Wiki · GitHub
Вы можете так же указывать путь до конфига высчитываемым в момент обращения свойством, тем самым при каждом запуске будет подставляться динамический путь.
Это очень классно, но можете увидеть, что используется оригинальный Allure.Commons, а не переписанный вами для чтения своих конфигов
Никогда не поздно отказаться от использования оригинального Allure.Commons, который еле развивается.
Моё дело предложить человеку, а будет он пользоваться или нет - дело сугубо его личное.
Не надо за него отвечать.
Александр, читайте глубже. У человека спекфлоу, xunit. Вопрос был задан именно об этом стеке.
Потому ответ в стиле а у меня уже все решено давно, не важно, что не с тем - как-то ни о чём
Так уж получается, что эта тема гуглится по словам Allure Csharp и создает путаницу всем тем, кто пытается понять что и как прикрутить.