Groovy

JavaのString#replaceAllによる正規表現置換でも、$1などでグループ化した文字列を後方参照できる

タイトル通りだが、チーム内の誰もできるということを知らなかったのでメモ。 replaceAllでの後方参照 Groovyの場合 Kotlinの場合 振り返り replaceAllでの後方参照 タイトル通り、第1引数の検索文字列に ( ~ ) で囲んだグループを記述し、第2引数の置換文…

Spockのテストコンパイルが遅いので、GradleでGroovyの増分コンパイルを有効化する

Spockでユニットテストを書いている、Gradleを使ったJavaプロジェクトがある。 Intellijでユニットテストを実行するとき、ソースコードに変更があると毎回ユニットテストのすべてのクラスがコンパイルされてしまい、実行までに2分前後のコンパイル待ちが発生…

Spock v1.3でPowerMockを使う

Spock + Mockitoでユニットテストを書いているときに、finalなクラスをモック化したくなったので、PowerMockを導入。 JUnit 4で使う時と同様、 @RunWith(PowerMockRunner) しただけでは実行時にエラーがでてしまったので、SpockでPowerMockを使う方法をメモ…

Groovyの名前付き引数(パラメータ)について

Groovy + Spockでユニットテストを書いているが、Groovyの名前付き引数・名前付きパラメータを知らないメンバーがいた。 なかなか特殊な仕様なのでメモ。 環境 仕様 コンストラクタの名前付き引数 メソッドやクロージャの名前付き引数 注意点 名前付き引数の…

SpockのテストをグルーピングしGradleタスク化、指定されたタスクで条件判定して処理を切り分け

前回の続き。 アサインされたJavaプロジェクトではSpring Bootを使用しているが、ユニットテストではモックが使われていなかった。 @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) でWebサーバーを起動し、 TestRestTemplate でControllerク…

Spockのwhen/then/whereで成功と例外の両方をテストする

Javaのユニットテストを書くとき、普段は例外が発生するパターンのテストを例外ごとに書き、それとは別に正常終了するテストを書いて、パラメータと結果の組み合わせをfixtureで渡している。 新しくアサインされたJavaプロジェクトでテストを書こうとしたら…

Groovyのメジャーバージョンが3になっていた

Chocolateyでインストールしたパッケージを更新すると、Groovyがv3.0.0になっていた。 プレビュー版が出たのは2018年みたい。 GitHubのReleaseを見ると、v3.0.0は2020/2/7、v3.0.1が2/14にリリースされており、公式ページからはv3.0.1がダウンロードできた。…

JWTの署名検証をOpenSSLとGroovyでやってみる

以前調べたJWTについて、jwt.ioで検索できるライブラリを使わずに、Googleで認証した署名の検証を試してみようと思い立った。 ただ、自作のスクリプトで署名の検証を計算している記事をいくつか見かけたが、さすがにそこまでフルスクラッチでやる気にはなれ…