Kotlinのテストデータを管理する便利なテクニックを徹底解説!初心者でも理解できる基本と活用法
生徒
「Kotlinでテストを書くときって、毎回同じデータを用意するのが大変なんですけど、何かいい方法はありますか?」
先生
「いいところに気がつきましたね。Kotlinでは、テストデータを効率よく使い回すための便利なテクニックがありますよ。」
生徒
「具体的にどうすれば楽になりますか?」
先生
「それでは、Kotlinのテストで使えるデータ管理のテクニックについて、ひとつずつ見ていきましょう!」
1. Kotlinでテストデータを管理する理由とは?
Kotlin(ことりん)でプログラムのテストを行うとき、毎回同じようなデータを何度も書いていませんか? たとえば「名前」「年齢」「住所」といった情報を、いちいち書き直すのはとても面倒です。こういったデータは、テストデータと呼ばれます。
テストデータをうまく管理すれば、コードの重複を減らせるだけでなく、変更にも強くなり、テストの見通しも良くなります。つまり、保守もしやすくなるということです。
2. 定数オブジェクトで共通データを定義しよう
最も基本的な方法は、テストで使うデータをobjectで定義する方法です。これは、いわば「使い回し用の道具箱」を作るイメージです。
たとえば、次のようにTestUsersというオブジェクトを定義します。
data class User(val name: String, val age: Int)
object TestUsers {
val taro = User("太郎", 20)
val hanako = User("花子", 25)
}
これでテストコードの中で、次のように呼び出せます。
@Test
fun testUserAge() {
val user = TestUsers.taro
assertEquals(20, user.age)
}
このようにしておけば、「太郎」や「花子」の情報を毎回書く必要がなくなり、コードがスッキリします。
3. KotlinのFactory関数を活用する
もう少し柔軟にテストデータを生成したい場合は、ファクトリー関数を使うと便利です。ファクトリー(factory)とは「工場」という意味で、必要なデータをその場で作ってくれる関数のことです。
fun createUser(name: String = "名無し", age: Int = 18): User {
return User(name, age)
}
このように定義しておけば、テスト内で次のように使えます。
val user = createUser(name = "さくら", age = 30)
名前や年齢を変えたいときも簡単ですし、引数を省略すればデフォルト値で作られるので、とても便利です。
4. JSON形式のデータを使って外部ファイルで管理する
テストデータが多くなってきたら、JSON形式のファイルにデータを外部化するのもおすすめです。JSON(ジェイソン)は、人間が読めて機械でも扱いやすいデータ形式です。
たとえば、user.json というファイルに以下のようなデータを書きます。
{
"name": "ゆうた",
"age": 28
}
そして、Kotlinではライブラリを使ってこのファイルを読み込むことができます。代表的なのは、kotlinx.serializationライブラリです。
@Serializable
data class User(val name: String, val age: Int)
fun readUserFromJson(): User {
val jsonText = File("user.json").readText()
return Json.decodeFromString(jsonText)
}
外部ファイルにしておけば、データの変更だけでテスト内容を柔軟に変えられるため、大規模なプロジェクトでも便利です。
5. テストデータをランダムに生成する
ランダムなテストデータを使いたい場面もあります。たとえば、100人のユーザーを一気に作って、それをテストするなどです。そういうときは、ListとRandomを使ってまとめて作りましょう。
val randomUsers = List(100) {
val randomAge = (18..65).random()
createUser(name = "ユーザー$it", age = randomAge)
}
これで、18歳から65歳までの年齢を持つランダムなユーザーが100人分作れます。大量のテストにとても便利です。
6. テストデータのバリエーションを作るテクニック
複数のバリエーションをすばやく準備するために、copy関数を使うのも有効です。data classで定義されたクラスでは、copy()を使って一部の値だけ変えた新しいインスタンスを簡単に作れます。
val baseUser = createUser(name = "共通ユーザー", age = 20)
val modifiedUser = baseUser.copy(age = 30)
これを使えば、もとのデータをベースに少しずつ違うパターンを簡単に作ることができます。
Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。
基礎からわかるKotlinをAmazonで見る※ Amazon広告リンク
7. Kotlinでテストデータを整理して効率化しよう
今回紹介したテクニックを使うと、テストコードの見通しが良くなり、管理もしやすくなります。特に、定数オブジェクト・ファクトリー関数・JSON外部ファイルの3つは、どんなプロジェクトでも役立つ基本技です。
テストデータをきちんと整理することで、バグを見つけやすくなり、プログラムの信頼性も上がります。初心者の方でも、少しずつ試していけば必ず理解できますよ。
【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分
「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。
本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。
具体的な体験内容と環境
【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。
【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。
この60分で得られる3つの体験
プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。
「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。
Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。
※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。
Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験