Я получил странное сообщение в Дженкинс

Я хочу протестировать проект 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).

Другие вопросы по тегам