2017-04-05 7 views
0

私は先週、学校プロジェクトのトラビスで統合テストを行うようにしてきました。私はかなりのプロジェクトをデバッグしましたが、今はブロックされており、外部の助けが必要です。mysqlを使ってtravisでテストを実行する

これまでのところ、Javaプロジェクトをデバッグして、テストをEclipseから起動するか、コマンドラインでmavenから起動できるようにしました。私は、データベースが作成され、データベーススクリプトが実行され、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) 

のmavenによって構築され、実行されているが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

私は2つの仮説を持っている:すべてのテーブルを作成します

の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 =真 ユーザー=ルート パスワード= サーバ名= localhostを databaseNameの= koalacal のportNumber = 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 'はデータベースmyapp_testのCREATE;'' –

+0

はこちらをご覧ください:https://docs.travis-ci.com/user/database-setup/ #ノート・オン・テスト・データベース –

+0

ニースを試しても同じ結果が得られます。 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 'koalatest.Calendar'テーブルが存在しません – Neph

答えて

1

私はgoogle travis mysqlに似たエラーがありましたが、私は自分の問題を解決しました。

このエラーは、大文字と小文字の区別の問題が原因で発生しています。 javaコードは 'Calendar'や 'Event'のようなテーブルに接続しようとしましたが、sqlスクリプトは 'calendar'と 'event'テーブルを作成しました。

大文字と小文字の区別が問題にならないため、このトラブルシューティングには時間がかかりました。 Mavenは問題なく正しくテストを実行できます。トラビスサーバーでは、テーブルの大文字と小文字の区別が重要になりました。

関連する問題