2017-04-05 110 views
0

我一直在嘗試上個星期左右的時間來對集成測試在學校項目的Travis上工作。我已經調試了一些項目,但現在我被封鎖了,需要外部幫助。使用mysql在Travis上運行測試

爲了給出一點上下文,到目前爲止,我已經調試了java項目,以便測試可以從eclipse或Maven在命令行中啓動。我在travis文件上工作過,以便創建數據庫,運行數據庫腳本並啓動java測試。但是,由於數據庫中的「表格丟失」,測試在travis上失敗。

This is a link to our repo.

這是travis.yml文件的代碼:

language : java 
jdk: 
- oraclejdk8 
service: 
    - mysql 
before_script: 
    - mysql -e 'DROP DATABASE IF EXISTS koalatest' 
    - mysql -e 'CREATE DATABASE IF NOT EXISTS koalatest;' 
    - mysql -u root --default-character-set=utf8 koalatest < backend/koalacal-backend/koalacal.sql 
script: cd backend && cd koalacal-backend && mvn test -X 
after_success: 
    - bash <(curl -s https://codecov.io/bash) 

正在建造和運行行家位於下rootfolder Java項目 - >後臺 - > koalacal,後端。

Here is a link to the error log maven produces on travis.

此行似乎是錯誤的來源:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'koalatest.Calendar' doesn't exist

我有兩個假設:

1-創建所有的表是不是被運行SQL腳本妥當由travis。

爲了驗證這個假設,我改變了travis調用的腳本的名字。正如所料,我得到一個錯誤,說特拉維斯無法找到該文件。至少,我知道這行代碼會導致travis查找一個sql文件。

- mysql -u root --default-character-set=utf8 koalatest < backend/koalacal-backend/koalacal.sql 

這就是說,我不知道該文件是否在數據庫上正常運行。

對於把所有相關信息在這篇文章的緣故,here is a link to the database script.

2-測試無法正常連接到數據庫。

這裏是一個包含有關連接到其數據庫中的信息的配置文件:
TestInstance =真 用戶=根 密碼= SERVERNAME =本地主機 的databaseName = koalacal 端口號= 3306

testUser=root 
testPassword= 
testServerName=127.0.0.1 
testDatabaseName=koalatest 
testPortNumber=3306</code> 

如果參數TestInstance設置爲true,則測試將信息testUser,testPassword,testServerName,testDatabaseName和testPortNumber連接到相關數據庫。

我相信當前包含在配置文件中的連接信息與travis文檔中說我們需要連接到mysql數據庫的方式相匹配。我試圖將testUser更改爲無效(如root3),並按預期收到錯誤消息。

也許在某種程度上測試不能連接到數據庫,也不會產生相關的錯誤消息,但我懷疑它。

有人可以看看我的問題,看看我是否錯過了一些明顯的(或不)?我不知道還有什麼可以嘗試的,我不希望在技術問題上再被封鎖一週。

+0

試着將你的數據庫創建腳本移動到'before_install: - mysql -e'CREATE DATABASE myapp_test;' –

+0

看看這裏:https://docs.travis-ci.com/user/database-setup/ #Note-on-test-database –

+0

不錯的嘗試,但我得到了相同的結果: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表'koalatest.Calendar'不存在 – Neph

回答

1

對於任何人可能谷歌Travis的MySQL和有一個類似的錯誤,我解決了我的問題。

該錯誤是由大小寫敏感性問題引起的。當sql腳本創建表'日曆'和'事件'時,java代碼試圖連接到像'日曆'和'事件'這樣的表。

解決此問題需要很長時間,因爲區分大小寫並未在我的計算機上造成任何問題。 Maven可以在沒有任何問題的情況下正確運行測試。只有在Travis服務器上,表格的大小寫敏感性才起作用。