2013-08-07 55 views
2

我有一套Webdriver測試用C#編寫,我使用MSTest作爲跑步者。在這一點上NUnit不是一個選項,所以我需要弄清楚如何使它與當前配置一起工作。對於CI我正在使用Jenkins ver。 1.514。我無法控制插件的安裝情況,或者更新Jenkins時,如果問這樣的事情可能會導致不同團隊的漫長等待和批准過程(討厭birocracy)。爲什麼DataDriven測試在使用MSTest時不再運行在Jenkins上?

所以..我有定義如下幾個數據驅動測試(我會粘貼其中之一)

[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文件,然後我打電話從PS EXEC這個文件是這樣的:

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

這似乎是工作,但我不得到任何登錄到詹金斯,如果我重定向到一個文件,然後每當另一個生成開始,擦除工作區文件丟失,所以我只有最後版本的文件,我不能比較它與其他生成。

的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作爲同一用戶在你的slave上運行命令?

正如您所說,您設法使用psexec來使其工作,解決方法是在運行作業的同一臺計算機上生成該文件,並將生成的日誌文件存檔爲工件。詹金斯將跟蹤它。

如果您希望嘗試在控制檯中輸出,也許要應用控制檯分析,還可以使您的psexec命令將構建後的文件輸出到控制檯(通過在控制檯之後鍵入該文件運行),或者可以使用這個tee-like批處理命令設法讓psexec將它輸入的內容輸出到jenkins控制檯中:Using a custom Tee command for .bat file

並且不要忘記捕獲標準錯誤!

相關問題