🐈

AndroidStudioで、Kotlinのmain関数を実行する

2023/12/18に公開
  • 新規プロジェクト作成で、「No Activity」を選択し、プロジェクト作成します。

  • パッケージの中にファイル作成します。ここでは以下の名前になっています。
      パッケージ名:com.example.testkotlinapp
      ファイル名:test.kt

  • test.kt に以下のコードを書きます

package com.example.testkotlinapp

fun main() {
    println("Hello, world!")
}
  • プログラム実行前に、1回、build(Make Project)します

  • main関数の横のボタンから、プログラム実行すると動作できました

実行 結果

なお、build(Make Project)を行わずに、プログラム実行すると、ClassNotFoundExceptionのエラーになります。


  • UnitTest

テストディレクトリ(java/com/example/testkotlinapp)に、UnitTest.ktファイルを作成し、以下のコードを書き、テストできました。
標準出力の出力先を一時的に変更してから、assertEqualsでチェックしています。

(注)Windowsでは改行コードを\r\nにしないと、テストが通過しないです・・・ハマりました。
そのままだと、テストコードの作成が面倒になりそうだったため、OSの改行コードを取得して、それを使用するようにしました

package com.example.testkotlinapp

import org.junit.Assert.assertEquals
import org.junit.Test
import java.io.ByteArrayOutputStream
import java.io.PrintStream


class UnitTest {
    @Test
    fun test_main() {
        // 標準入出力のオブジェクトを退避
        val orgOut = System.out

        // 標準出力の出力先を変更
        val stream = ByteArrayOutputStream()
        System.setOut(PrintStream(stream))
        // test
        main()
        val LS = System.getProperty("line.separator")
        assertEquals("Hello, world!${LS}", stream.toString())

        // 標準出力の出力先を戻す
        System.setOut(orgOut)
    }
}
  • 参考

標準出力の出力先変更は、こちらのサイトを参考にしました
https://cyzennt.co.jp/blog/2020/10/09/java:標準入出力の入力元・出力先を変更する/
改行コードの問題は、こちらのサイトを参考にしました
https://kechanzahorumon.hatenadiary.com/entry/2012/11/13/210522

Discussion