2010-09-16 38 views
0

這個控制檯應用程序代碼調用MSTest並開始運行單元測試,但是對於單元測試所需的某些程序集(請參閱代碼下面的錯誤)「拒絕訪問」失敗。任何方式順利使MSTest從這裏作爲管理員運行?如何從控制檯應用程序調用MSTest以管理員身份運行?

我試過一個清單,沒有改變任何東西,因爲清單指的是調用應用程序,而不是mstest,對不對?

還試過指定ProcessStartInfo.Username和Password,但Password需要一些特殊的SecureString,這不是一個交互式控制檯應用程序,它由SVN在預提交鉤子上調用。

private static string MSTest() 
    { 
     if (File.Exists(@"C:\temp\TestProject1.trx")) 
     { 
      File.Delete(@"C:\temp\TestProject1.trx"); 
     } 

     Process process = new Process(); 
     ProcessStartInfo psi = new ProcessStartInfo(); 
     psi.FileName = @"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe"; 
     psi.Arguments = String.Format 
      (
      "/testcontainer:{0} /resultsfile:{1} /nologo", 
      @"C:\Users\johndoe\Documents\SVN_TEST\Test\branches\johndoe\WebApplication1\TestProject1\bin\Debug\TestProject1.dll", 
      @"C:\temp\TestProject1.trx" 
      ); 
     psi.UseShellExecute = false; 
     psi.RedirectStandardOutput = true; 
     psi.RedirectStandardError = true; 
     process.StartInfo = psi; 
     process.Start(); 
     string output = process.StandardOutput.ReadToEnd(); 
     process.WaitForExit(); 
     return output; 
    } 

錯誤:提交失敗(細節如下):
錯誤:提交阻斷pre-commit鉤子(退出代碼1)輸出:
錯誤:加載C:\ Users \用戶輸入johndoe \文件\ SVN_TEST \測試\分支機構\ johndoe的\ WebApplication1 \ TestProject1 \ BIN \調試\ TestProject1.dll ...
錯誤:開始執行...
錯誤:
錯誤:結果的頂部級測試
錯誤:---- --- ---------------
錯誤:失敗的Te stProject1.BankTest.DebitTest
錯誤:0/1測試(多個)通過,1未能
錯誤:
錯誤:摘要
錯誤:-------
錯誤:測試運行失敗。
錯誤:無法1個
錯誤:---------
錯誤:合計1
錯誤:結果文件:C:\ TEMP \ TestProject1.trx
錯誤:測試設置:默認測試設置
錯誤:
錯誤:運行有以下問題(補):
錯誤:警告:測試運行部署問題:無法爲測試
錯誤部署的依賴關係:存儲
錯誤:「C:\用戶\輸入johndoe \文件\ svn_test \測試\分支機構\ johndoe的\ webapplication1 \ testproject1 \ BIN \調試\測試project1.dll':
錯誤:System.IO.FileLoadException:無法加載文件或組件
錯誤:Microsoft.VisualStudio.QualityTools.Tips.UnitTest.AssemblyResolver,
錯誤:版本= 10.0.0.0,文化=中立,PublicKeyToken = b03f5f7f11d50a3a'或其中一個
錯誤:其依賴關係。訪問被拒絕。
錯誤:文件名: 'Microsoft.VisualStudio.QualityTools.Tips.UnitTest.AssemblyResolver,
錯誤:版本= 10.0.0.0,文化=中性公鑰= b03f5f7f11d50a3a'
錯誤:在System.Reflection.RuntimeAssembly._nLoad (的AssemblyName文件名,字符串
錯誤:代碼庫,證據assemblySecurity,RuntimeAssembly locationHint,
錯誤:StackCrawlMark & stackMark,布爾throwOnFileNotFound,布爾
錯誤:forIntrospection,布爾suppressSecurityChecks)
錯誤:在System.Reflection.RuntimeAssembly。n載入(的AssemblyName文件名,字符串
錯誤:代碼庫,證據assemblySecurity,RuntimeAssembly locationHint,
錯誤:StackCrawlMark & stackMark,布爾throwOnFileNotFound,布爾
錯誤:forIntrospection,布爾suppressSecurityChecks)
錯誤:在System.Reflection.RuntimeAssembly。 InternalLoadAssemblyName(的AssemblyName
錯誤:assemblyRef,證據assemblySecurity,StackCrawlMark & stackMark,布爾
錯誤:forIntrospection,布爾suppressSecurityChecks)
錯誤:在System.Reflection.RuntimeAssembly.Intern alLoad(字符串assemblyString,
錯誤:證據assemblySecurity,StackCrawlMark & stackMark,布爾forIntrospection)
錯誤:在System.Activator.CreateInstance(字符串的AssemblyName,字符串的typeName,
錯誤:布爾IGNORECASE,的BindingFlags bindingAttr,粘結劑粘結劑,對象[]指定參數時,
錯誤:CultureInfo的文化,對象[] activationAttributes,證據securityInfo,
錯誤:StackCrawlMark & stackMark)
錯誤:在System.Activator.CreateInstance(字符串的AssemblyName,字符串的typeName,
錯誤:布爾IGNORECASE ,Bindin GFLAGS bindingAttr,粘結劑粘結劑,對象[]指定參數時,
錯誤:CultureInfo的文化,對象[] activationAttributes,證據securityInfo)
錯誤:在System.AppDomain.CreateInstance(字符串的AssemblyName,字符串的typeName,
錯誤:布爾IGNORECASE,的BindingFlags bindingAttr,粘結劑粘結劑,對象[]指定參數時,
錯誤:CultureInfo的文化,對象[] activationAttributes,證據securityAttributes)
錯誤:在System.AppDomain.CreateInstanceAndUnwrap(字符串的AssemblyName,字符串
錯誤:的typeName,布爾IGNORECASE, BindingFlags bindingAttr,活頁夾活頁夾,對象[]
錯誤:args,CultureInfo培養,對象[] activationAttributes,證據securityAttributes)
錯誤:在System.AppDomain.CreateInstanceAndUnwrap(字符串的AssemblyName,字符串
錯誤:的typeName,布爾IGNORECASE,的BindingFlags bindingAttr,粘結劑粘結劑,對象[]
錯誤:指定參數時,CultureInfo的培養,對象[] activationAttributes,證據securityAttributes)
錯誤:在
錯誤:Microsoft.VisualStudio.TestTools.Utility.AssemblyLoadStrategy.GetDependentAssemblies(字符串
錯誤:路徑)
錯誤:在
錯誤:Microsoft.VisualStudio .TestTools.Utility.As semblyHelper.GetDependentAssemblies(字符串
錯誤:路徑,DependentAssemblyOptions選項,字符串CONFIGFILE)
錯誤:在
錯誤:Microsoft.VisualStudio.TestTools.TestManagement.DeploymentManager.GetDependencies(字符串
錯誤:大師,字符串CONFIGFILE,TestRunConfiguration runConfig ,DeploymentItemOrigin
錯誤:dependencyOrigin,列表1 dependencyDeploymentItems, Dictionary 2 missingDependentAssemblies)
錯誤:在
錯誤:Microsoft.VisualStudio.TestTools.TestManagement.DeploymentManager。ProcessNewStorage(字符串
錯誤:testStorage,DeploymentHelper幫手,DeploymentItemOriginType originType,
錯誤:列表 錯誤:dependencyDeploymentItems,Dictionary`2 missingDependentAssemblies)

回答

0

可以傳遞一個安全的字符串密碼,通過執行以下操作:

if (!String.IsNullOrEmpty(Password)) 
{ 
    SecureString pwd = new SecureString(); 
    for (int i = 0; i < Password.Length; i++) 
    { 
     pwd.AppendChar(Password[i]); 
    } 
    process.StartInfo.Password = pwd; 
} 
0

嘗試添加該

Process process = new Process(); 
process.StartInfo.Verb = "runas"; 
相關問題