Can somebody tell me how should I unit-test extension functions in Kotlin? Since they are resolved statically should they be tested as static method calls or as non static ? Also since language is fully interoperable with Java, how Java unit test for Kotlin extension functions should be performed ?
Extension functions are a cool Kotlin feature that help you develop Android apps. They provide the ability to add new functionality to classes without having to inherit from them or to use design patterns like Decorator. Read more about Decorator pattern on Wikipedia.
In Kotlin, you can easily call another function by just importing the same in the current Kotlin file where your main function is running. Whatever the function we are declaring in a Kotlin file will be compiled into a static method by default, and it will be placed under the same package.
Kotlin with top-level extension function is a pure Java class with a static method. That's why it needs to somehow pass the original String.
Well, to test a method, whether static or not, you call it as real code would do, and you check that it does the right thing.
Assuming this extension method, for example, is defined in the file com/foo/Bar.kt:
fun String.lengthPlus1(): Int { return this.length + 1 }
If you write your test in Kotlin (which you would typically do to test Kotlin code), you would write
assertThat("foo".lengthPlus1()).isEqualTo(4);
If you write it in Java (but why would you do that?)
assertThat(BarKt.lengthPlus1("foo")).isEqualTo(4);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With