2013-08-07 1 views
2

У меня есть набор тестов Webdriver, которые написаны на C#, и я использую MSTest в качестве бегуна. На данный момент NUnit не является вариантом, поэтому мне нужно понять, как заставить его работать с текущей конфигурацией. Для CI я использую Jenkins ver. 1,514. Я не контролирую, какие плагины устанавливаются или когда Дженкинс обновляется, и если просить такую ​​вещь может привести к длительным ожиданиям и утверждениям в разных командах (ненависть к биократии).Почему тесты DataDriven больше не работают на Jenkins при использовании MSTest?

Так .. У меня есть несколько тестов DataDriven, которые определяются следующим образом (я буду вставлять в одном из них)

[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "UsersData.csv", "UsersData#csv", DataAccessMethod.Sequential)] 
    [TestMethod()] 
    public void Test_Login() 
    { 
     Logger.Info(""); 
     Logger.Info("-----------------------------------------------------------------"); 

Таким образом, это должно быть достаточно ясно, что я использую файл UsersData.csv , который помещается в папку TestData в моем проекте. Для того, чтобы запустить этот тест в Дженкинс, я имел обыкновение использовать эту командную строку

mstest /testmetadata:"%WORKSPACE%\SeleniumJenkins.vsmdi" /testlist:Jenkins /resultsfile:"%WORKSPACE%\AllTests_Jenkins.trx" /runconfig:"%WORKSPACE%\Local.testsettings" /detail:stdout 

Все работало нормально, но в один прекрасный день, когда я столкнулся с этой ошибкой в ​​файле результатов TRX:

The unit test adapter failed to connect to the data source or to read the data. For more information on troubleshooting this error, see "Troubleshooting Data-Driven Unit Tests" (http://go.microsoft.com/fwlink/?LinkId=62412) in the MSDN Library.Error details: The .Net Framework Data Providers require Microsoft Data Access Components(MDAC). Please install Microsoft Data Access Components(MDAC) version 2.6 or later.Retrieving the COM class factory for component with CLSID {2206CDB2-19C1-11D1-89E0-00C04FD7A829} failed due to the following error: 8007007e The specified module could not be found. (Exception from HRESULT: 0x8007007E). 

Но если Я регистрирую машину, на которой работает ведомый, и запускает ту же команду. Кажется, он находит файлы DataSource, и ir работает нормально.

Кроме того, я установил PsExec и я поставил команду в * .bat файл, то я назвал этот файл из пса Exec так:

psexec \\my_IP -u "machine-name\jenkins-local" -p "password" cmd /C call "%WORKSPACE%\Selenium\msteststart.bat" 

Это, кажется, работает, но я не получить любую запись в Jenkins, и если я перенаправляю его в файл, тогда всякий раз, когда начинается другая сборка и стирает рабочую область, файл теряется, поэтому у меня есть только последняя версия файла, и я не могу сравнивать его с другими сборками.

local.testsettings файл выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"? > 
    <TestSettings name="Local" id="06505635-693a-4f31-b962-ecf8422b5eca" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010"> 
     <Description>These are default test settings for a local test run.</Description> 
     <Deployment> 
      <DeploymentItem filename="Selenium\TestData\UsersData.csv" /> 
     </Deployment> 
    <NamingScheme baseName="Selenium_" useDefault="false" /> 
    <Execution> 
    <Timeouts testTimeout="10800000" /> 
     <TestTypeSpecific> 
     <UnitTestRunConfig testTypeId="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b"> 
      <AssemblyResolution> 
      <TestDirectory useLoadContext="true" /> 
      </AssemblyResolution> 
     </UnitTestRunConfig> 
     </TestTypeSpecific> 
    <AgentRule name="Execution Agents"> 
    </AgentRule> 
    </Execution> 
</TestSettings> 

Я был бы признателен, если кто-то может дать мне намек на это. Благодаря

ответ

0

Это может быть

  • ошибка установки MDAC. Например. вот некоторые ideas о том, как его отремонтировать. Подумайте, попросите вашего администратора попытаться проверить, правильно ли установлена ​​MDAC.
  • вопрос с разрешением? вы на 100% уверены, что используете команду на своем подчиненном устройстве в качестве одного и того же пользователя, как с помощью jenkins slave, так и с psexec?

Как вы говорите, вам удастся заставить его работать с помощью psexec, обходным путем было бы сгенерировать файл на том же компьютере, в котором выполнялось задание, и архивировать созданный файл журнала как артефакт. Дженкинс будет следить за этим.

Если вы предпочитаете использовать вывод в консоли, возможно, для применения разбора в консоли, вы также можете сделать так, чтобы ваша команда psexec выводила файл после сборки на консоль (путем ввода ее после ее завершения), или, может быть, использовать эту командную команду, чтобы получить psexec для вывода того, что она делает в консоль jenkins: Using a custom Tee command for .bat file

И не забудьте также зафиксировать стандартную ошибку!

Смежные вопросы