Я получил странное сообщение в Дженкинс
Я хочу протестировать проект specflow с Дженкинсом. И я могу протестировать только один проект. Я просто изменяю тестовый файл, который он показывает No tests to execute
сообщение. Даже два проекта имеют одинаковое содержимое, отличаются только имена проектов. Почему такие? В чем причина? Пожалуйста, помогите мне, спасибо!
Сообщение:
Started by user anonymous
Building in workspace C:\Program Files (x86)\Jenkins\workspace\test2
Path To MSTest.exe: C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\MSTest.exe
Delete old result file file:/C:/Program%20Files%20(x86)/Jenkins/workspace/test2/TestResult.trx
[test2] $ "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\MSTest.exe" /resultsfile:TestResult.trx "/testcontainer:C:\Users\Documents\Visual Studio 2013\Projects\test\test\bin\Debug\test.dll"
Microsoft (R) Test Execution Command Line Tool Version 12.0.21005.1
Copyright (c) Microsoft Corporation. All rights reserved.
Loading C:\Users\Documents\Visual Studio 2013\Projects\test\test\bin\Debug\test.dll...
Starting execution...
No tests to execute.
Processing tests results in file(s) TestResult.trx
FATAL: No MSTest test report files were found.
FATAL: No MSTest TRX test report files were found. Configuration error?
Build step 'Publish MSTest test result report' marked build as failure
Finished: FAILURE
да. Я просто отлаживаю все тесты. Я пытаюсь поместить содержимое в specflowfeaturesteps.cs в Unit.cs. И пытаюсь запустить его с помощью jenkins. Затем я нахожу, что тестирую только одну функцию в модульном тесте.
сообщение:
Пройденный тест.UnitTest1.login 1/1 тест (ов)
specflowfeature.feature:
Given I login pages with default test user and password
Then the page should show 'http://' on the screen
specflowfeaturesteps.cs:
[Given(@"I login pages with default test user and password")]
public void login_success()
{
I.Open("http://");
I.Enter("cherry").In("#loginName");
I.Enter("****").In("#password");
I.Click("input[value='Log In']");
}
[Then(@"the page should show '(.*)' on the screen")]
public void check_URL(string p0)
{
I.Assert.Url((uri) => uri.GetLeftPart(UriPartial.Path) == p0);
}
1 ответ
По умолчанию SpecFlow генерирует свои тесты, используя NUnit. Вы уверены, что SpecFlow генерирует тесты MSTest?
Я бы открыл сгенерированный файл модульных тестов (в файле возможностей что-то вроде FeatureFile.feature.cs) и проверил, есть ли там тесты NUnit или MSTest.
Вы также можете проверить в конфигурации, чтобы увидеть, содержит ли конфигурация это:
<specFlow>
<unitTestProvider name="MSTest" />
</specFlow>
или это:
<specFlow>
<unitTestProvider name="NUnit" />
</specFlow>
Другая возможность заключается в том, что код регистрируется без генерации модульных тестов (хотя это возможно только в том случае, если файлы объектов изменены вне Visual Studio или вы не используете плагин specflow внутри vs).