2016-01-19 189 views
2

我有用java編寫的Selenium測試(Eclipse)。我使用JDBC SQLServerDriver連接到SQL Server並驗證數據庫中的一些結果;測試在Eclipse中完美運行:(Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver).newInstance();)。通過命令行運行Maven @Tests

雖然我需要通過命令行來執行它們我跑以下行:
mvn clean install -Dtest=Test1 test

測試被執行只有等到它連接的SQL Server驗證數據。我得到錯誤信息說:

值java.sql.SQLException:SQLSERVER:// DBALIASSTAGING:1433 在java.sql.DriverManager.getConnection(DriverManager.java:689)

發現JDBC沒有合適的驅動程序

我指向Eclipse中的JDK 1.8和我的JAVA_HOME。我在Eclipse和CLASSPATHC:\Microsoft JDBC Driver 4.0\sqljdbc_4.0\enu\sqljdbc4.jar)中指出了我的sqljdbc4.jar

還有什麼我不知道?奇怪的是Test1運行得很好 - 僅在Eclipse中連接和搜索數據庫。但是,當我運行mvn clean install -Dtest=Test1 test時,無法通過命令行連接SQL Server。運行良好,但需要連接到SQL Server(11)時出現窒息。

我已閱讀sqljdbc4.jar上的所有帖子,並正確設置了CLASSPATH變量,並且在我的配置中找不到任何錯誤。

請給我一個線索或提示,我完全失去了,我做錯了什麼?

+0

爲什麼運行mvn clean install test?測試階段已經作爲級聯的安裝階段的一部分執行 –

+0

此外,相關缺失庫sqljdbc4在Eclipse中添加,但不作爲Maven依賴項,對吧?您可以將其安裝爲maven依賴項,如[SO線程]所述(http://stackoverflow.com/questions/19537396/missing-artifact-com-microsoft-sqlserversqljdbc4jar4-0) –

回答

1

這是相當棘手的,據我所知微軟還沒有發佈該jar到任何maven倉庫。

首先,你在eclipse classpath中擁有jar的事實對於Maven來說並不意味着什麼(它是獨立的)。 Maven將要求您在項目的pom.xml中有一個依賴項才能使用該jar。 (與eclipse類路徑相似)。

像這樣:

<dependency> 
    <groupId>com.microsoft.sqlserver</groupId> 
    <artifactId>sqljdbc4</artifactId> 
    <version>4.0</version> 
    <scope>test</scope> 
</dependency> 

公告範圍的測試意味着測試時的罐子將只可用於行家。

現在,依賴通常從Maven中央存儲庫下載。由於它不在那裏,所以你必須從微軟下載它並使用以下代碼自行安裝它:

mvn install:install-file -Dfile = sqljdbc4.jar -DgroupId = com.microsoft.sqlserver -DartifactId = sqljdbc4 -Dversion = 4.0 -Dpackaging =罐子

Missing artifact com.microsoft.sqlserver:sqljdbc4:jar:4.0

同時請有關JTDS對方的回答。這個庫(它在maven中公開可用)是我成功用於多個生產運行軟件的庫。

有關maven依賴關係的更多信息:https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

+0

非常感謝A. Di Matteo,我補充說sqljdbc4.jar依賴到Maven,它解決了這個問題。我通過'mvn surefire:test -Dtest = Test1'成功執行測試;感謝所有人的幫助! – Lulu

+0

我不是迪馬泰奧,但我很高興它工作正常:) – mkbrv