
testing
mk2data で Markdown からテストデータ構築
mk2dataという小さなモジュールを作りました。マークダウンを使って、テストデータのセットアップや検証ができるようになるものです。なんでこんなものを作ったのかと申しますと。DB周りのテストを書く場合に、データのセットアップや検証のために、INSERTやSELECTを発行して確認するシーン、けっこうあると思います。でもこれ、面倒じゃないですか。プロダクションコードではバリバリORM使うのに、テストではあんまり使っていなかったり、標準APIを使って直接SQL発行してデータ作ってたり。そして煩雑になったSQL発行処理に、データのサマリや説明をつらつらとコメントしたりする。かくいうわたしも、以下のようなことをしていたんですね。dataSource.connection.use{conn->conn.createStatement().use{stmt->/*|id|name|age|blood|2020.03.07
Springで外部APIをリクエストする場合のテスト
外部APIをリクエストしている機能のテストをしたい場合、Springでは、MockRestServiceServerを使います。MockRestServiceServerを使うと、RestTemplateがリクエストしたURL等の条件に応じて、期待したレスポンスを返すようにテストを構成できるようになります。また必要に応じて、モックされたリクエストが、正しく順番通りに使用されたかどうかも検証できます。なお、今回のサンプルコードは以下にあるので、こちらも参考に。https://github.com/yo1000/example.MockRestServiceServer/tree/master/MockRestServiceServer-client要件Java1.8.0_121Maven3.5.3Kotlin1.2.41SpringBoot1.5.12.RELEASE$./mvnw-vApa2018.06.09
KotlinでMockitoを使うとanyがうまくいかない
テストでMockitoを使っていると、any(Class<T>)を使いたくなる場面は、そこそこ多いように思います。ところが、Kotlinでテストを書いていると、これを受け取ったKotlin実装のメソッドで以下のようなエラーが吐かれてしまい、テストが書けません。java.lang.IllegalStateException:Mockito.any(Hoge::class.java)mustnotbenull調べてみると、近い内容でお困りのケースが見つかったので、これを参考に対応してみました。要件Kotlin1.2.21Mockito1.10.19対処法一度Kotlin実装された別のメソッドでラップしてあげて、Kotlinで実装されたメソッドに、Null安全な状態で渡してあげれば良いようでした。以下のようにします。@Testfuntest(){valinvokerMock=Mockito.mo2018.05.28
DynamoDB LocalをSpring Bootで使う
概要DynamoDBLocalを、SpringBootで使うメモ。SpringDataのCrudRepositoryを使用した、リポジトリクラスの定義と、自動生成や、SpringBootのAutoconfigurationの仕組みを組み合わせて、プロダクションと、テストで、データストアの使い分けができるようにしていきます。この手順で使用したコードは、以下に公開しているので、こちらも参考にしてください。https://github.com/yo1000/ddb-local/tree/e9eb5812f6/ddb-local-spring-boot要件環境今回の作業環境は以下のとおりです。Java1.8.0_131Kotlin1.2.10DynamoDBSDK1.11.263DynamoDBLocal1.11.86SpringBoot2.0.0.M7$sw_versProductName:Ma2018.01.14
DynamoDB Localを使用したテスト
概要AmazonDynamoDBを、AWSに依存せず、ローカルでテストする流れのメモ。DynamoDBでは、AWSを利用せずとも、ローカルで検証できるように、AWS自身からDynamoDBLocalというモジュールが提供されています。このモジュールはAWSが管理しているMavenリポジトリにもホスティングされており、これを利用することで、事前に特別なコマンド等を発行することなく、JVM言語のビルドプロセス過程で、ローカルにDynamoDBを用意することができるようになります。このポストでは、Kotlinプロジェクトで、DynamoDBLocalを使用してテストする場合に、どのような設定が必要になるのかを中心に書いていきます。この手順で使用したコードは、以下に公開しているので、こちらも参考にしてください。https://github.com/yo1000/ddb-local/tree/40c2018.01.13
Keycloak認証を使うリソースサーバーのGroovy Spockテスト
概要Keycloakによる認証を使う、リソースサーバー(SpringBootクライアント)でのGroovySpockテスト実装メモ。この手順で使用したコードは、以下に公開しているので、こちらも参考にしてください。https://github.com/yo1000/kc-resource/ac9914ae02#try-testing-with-only-kc-resource-serverまた、テストについては、既に過去のポストで触れているため、ここでは、GroovySpockを適用するにあたって、変更が必要となる部分について書いていきます。要件環境今回の作業環境は以下のとおりです。Java1.8.0_131SpringBoot1.5.9.RELEASEKeycloak3.4.1.FinalGroovy2.4.11Spock1.1-groovy-2.4$sw_versProductName:2018.01.03
Keycloak認証を使うリソースサーバーのテスト
概要Keycloakによる認証を使う、リソースサーバー(SpringBootクライアント)でのテスト実装メモ。この手順で使用したコードは、以下に公開しているので、こちらも参考にしてください。https://github.com/yo1000/kc-resource/584c4c92ce#try-testing-with-only-kc-resource-serverまた、テストコード以外の部分については、過去のポストを前提としています。関連するものについては軽く触れますが、詳細を確認したい場合は、そちらを確認してください。要件環境今回の作業環境は以下のとおりです。Java1.8.0_131SpringBoot1.5.9.RELEASEKeycloak3.4.1.Final$sw_versProductName:MacOSXProductVersion:10.12.5BuildVersion2017.12.25


