🐈
AndroidStudioで、Kotlinのmain関数を実行する
-
新規プロジェクト作成で、「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)
}
}
- 参考
標準出力の出力先変更は、こちらのサイトを参考にしました
改行コードの問題は、こちらのサイトを参考にしました
Discussion