読者です 読者をやめる 読者になる 読者になる

かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

IntelliJ IDEA を 14.0.3 → 14.1.1 へバージョンアップしました

IntelliJ IDEA の 14.1.1 がリリースされていたので、インストーラー ideaIC-14.1.1.exe をダウンロードしてバージョンアップしてみました。

が! 以前 IntelliJ IDEA を 14.0.3 → 14.1 へバージョンアップしましたが。。。 で書いた時と同じく「Run 'Tests in 'ksbysample...' with Coverage」を実行すると Class not found: "ksbysample.webapp.basic.web.CountryControllerTest$隱崎ィシ譎ゅ?ョ蝣エ蜷?$CSRF繝医?シ繧ッ繝ウ縺後↑縺?蝣エ蜷医?ョ繝?繧ケ繝?" というエラーメッセージが出力されてテストが実行できませんでした。Gradle の test タスクの方は正常に実行できるところも同じでした。

ただし、今回気づいたのですが 14.1.1 は 14.0.3 と比較すると動作が若干軽快な気がします! 14.1.1 の方を使ってみたくなったので、対応方法がないのか確認して見ることにします。

 
エラーメッセージが文字化けしていることからテストクラス・テストメソッド名に日本語を使用しているあたりが原因のように思えたので、CountryControllerTest クラスと CountryListControllerTest クラスのテストクラス・テストメソッド名の日本語を英数字のみの名称に変更してみたところ、「Run 'Tests in 'ksbysample...' with Coverage」が正常に実行できるようになりました。もう少し調査してみたところ、結論としては「テストクラス名に日本語が使用できなくなっている」という問題でした。テストメソッド名が日本語なのは大丈夫のようです。

テストクラス名に日本語を使うのはちょっと気に入っていたので、対策がないか Web で調べてみたところ以下の記事を見つけました。

MacOSX上でQuick JUnitをお使いの皆様へ。日本語クラス名、メソッド名の対応方法
http://d.hatena.ne.jp/kompiro/20100425/1272202511

この記事によると -Dfile.encoding=UTF-8 を指定すれば日本語クラス名が通るようになるはずとのこと。これを試してみます。

まずは IntelliJ IDEA のメインメニューから「Run」-「Edit Configurations...」メニューを選択します。「Run/Debug Configurations」ダイアログが表示されますので、画面左側のツリーからこれまでのテスト実行で生成された「Gradle」と「JUnit」の下に表示されているアイテムを全て削除します。

f:id:ksby:20150408035511p:plain

削除したら、画面左側のツリーから「Defaults」-「JUnit」を選択します。画面右側に JUnit 実行時の設定画面が表示されますので、「VM options」の最後に -Dfile.encoding=UTF-8 を追加した後、「OK」ボタンをクリックしてダイアログを閉じます。

f:id:ksby:20150408035942p:plain

「Run 'Tests in 'ksbysample...' with Coverage」を実行します。今度は正常にテストを実行することが出来ました。

f:id:ksby:20150408040409p:plain

Gradle projects View ( 以前の Gradle tasks View から名称が変わっています ) から build タスクを実行すると、こちらも問題なく "BUILD SUCCESSFUL" のメッセージが表示されました。

問題が解消されましたので、このまま 14.1.1 を使ってみたいと思います。

 
また、設定を変更したのでコミットしようとしたら「No changes detected」のダイアログが表示されて何もコミットできませんでした。設定がどこに保存されているのか確認したところ、C:\project-springboot\ksbysample-webapp-basic\.idea\workspace.xml に保存されていました。.idea ディレクトリは .gitignore に記述しているのでコミット対象外になってるのですが、今日設定した内容とかはコミットしておきたいところではあります。ただし workspace.xml の中を見てみると過去のコミット時のメッセージも記録されており、それはコミット対象にはしたくないんですよね。。。 何か良い方法はないのでしょうか。