2012-07-24 51 views
1

我試圖在MSTest測試代理上運行一些與數據庫相關的集成測試。我們使用c#和帶有devart dotconnect的oracle數據庫。在MSTest代理上運行時缺少Oracle oci.dll

由於我們需要使用間接模式,我在測試代理上安裝了devart和一個oracle客戶端。

當我在本地機器上執行測試時,測試運行順利。但是,當在遠程測試代理上執行時,它無法找到客戶端的oci.dll,它是某處的依賴項:

System.IO.FileNotFoundException:無法從家中加載Oracle客戶端庫oci.dll ..

現在,我不知道爲什麼會發生這種情況。我已經檢查了PATH環境變量,但它們看起來很好。任何想法,爲什麼這可以在我的機器上運行,但不是在部署到測試代理時?

編輯:devart中添加的堆棧跟蹤:

Devart.Data.Oracle.OracleHome.get_ClientVersion() 
Devart.Data.Oracle.aw.a(Boolean A_0, Boolean A_1, OracleHome A_2, Boolean A_3) 
Devart.Data.Oracle.OracleInternalConnection..ctor(aa connectionOptions, OracleInternalConnection proxyConnection) 
Devart.Data.Oracle.cs.a(k A_0, Object A_1, DbConnectionBase A_2) 
Devart.Common.DbConnectionFactory.a(DbConnectionPool A_0, k A_1, DbConnectionBase A_2) 
Devart.Common.DbConnectionPool.a(DbConnectionBase A_0) 
Devart.Common.DbConnectionPool.GetObject(DbConnectionBase owningConnection) 
Devart.Common.DbConnectionFactory.a(DbConnectionBase A_0) 
Devart.Common.DbConnectionClosed.Open(DbConnectionBase outerConnection) 
Devart.Common.DbConnectionBase.Open() 
Devart.Data.Oracle.OracleConnection.Open() 
+0

執行單元測試的用戶是否擁有Oracle主目錄的權限? http://forums.devart.com/viewtopic.php?t=15271 – 2012-07-24 12:19:55

+0

它可能是像基因S說的權限。您還可以檢查註冊表中Oracle Home的差異。如果你只有一個家,HKEY_LOCAL_MACHINE \ SOFTWARE \ ORACLE \ HOME 。檢查是否有指向右側的目錄。 – 2012-07-24 12:41:16

+0

Als checkout - http://forums.devart.com/viewtopic.php?t=22700 - 與本地相比,您的遠程測試代理是否以不同的模式運行? – 2012-07-24 12:51:49

回答

0

感謝您的答覆,得到了正確的指針。顯然,當64位線程嘗試加載32位OCI.DLL時會出現問題,反之亦然。不過,我玩弄了測試設置並構建了與32/64相關的設置,但無濟於事。

無論如何,我還能夠通過在測試代理上安裝64位Oracle Client來另外解決問題。出於某種原因,似乎QTAgent線程找到了正確的OCI.DLL。