fresh digitable

めんどくさかったなってことを振り返ったり振り返らなかったりするための記録

robolectric4.5-alpha-1かそれより新しいバージョンを使ってSQLiteのCommon Table Expressionを使ったテーブルのJVMテストをしよう

事の発端:

RepositoryのJVMテストを書くために、Room.inMemoryDatabaseBuilder()を使ってDBを作りテスト対象に注入したところ、テスト実行時に次のような例外が出た*1

Caused by: com.almworks.sqlite4java.SQLiteException: [1] DB[1] prepare() CREATE VIEW `view_foo` AS WITH bar AS ( ... [near "WITH": syntax error]

で、ぐぐったらズバリのissueが上がっていた。

github.com

このissueはrobolectric 4.1の頃に開かれたらしいが、コメントによるとこのころのrobolectricが依存していたsqlite4javaのバージョンは0.282で、最新のバージョンはCTEをサポートしたsqlite3.8.7に対応している1.0.392とのこと。

sqlite4javaのバージョンアップに関するPRはrobolectric4.4のリリース以降にマージされたようで、4.5-alpha-1より新しいバージョンに含まれている様子。今回は4.5-alpha-3が最新だったのでこれを使ってテストが通ることを確認した。

確認していないが、過去に書いた記事: akihito104.hatenablog.com に関しても影響があるかもしれない。あるといいなあ。

*1:実行時のrobolectricのバージョンは4.4