2
votes

Gotten familiar a bit with Kotlin I wanted to introduce it another Android-Java project, as a first step for testing only. I decided to start straight with Spek.

I added the following dependencies to build.gradle of the module to be tested:

testCompile 'junit:junit:4.12'
testCompile "org.jetbrains.kotlin:kotlin-stdlib:1.0.2"
testCompile "org.jetbrains.kotlin:kotlin-test-junit:1.0.2"
testCompile "org.jetbrains.spek:spek:1.0.25"

Among others I used the SimpleTest class of spek-samples of the git repo:

import org.jetbrains.spek.api.Spek
import kotlin.test.assertEquals


class SampleCalculator
{
    fun sum(x: Int, y: Int) = x + y
    fun subtract(x: Int, y: Int) = x - y
}

class SimpleTest : Spek({
    describe("a calculator") {
        val calculator = SampleCalculator()

        it("should return the result of adding the first number to the second number") {
            val sum = calculator.sum(2, 4)
            assertEquals(6, sum)
        }

        it("should return the result of subtracting the second number from the first number") {
            val subtract = calculator.subtract(4, 2)
            assertEquals(2, subtract)
        }
    }
})

The code compiles and in Android Studio I am shown a green play button next to the class declaration to run the tests of the class. However, doing so results in

Process finished with exit code 1
Class not found: "com.anfema.ionclient.serialization.SimpleTest"Empty test suite.

I created JUnit3 and JUnit4 tests of which all ran without any problems.

Did I miss any additional configuration step for Spek tests?

1

1 Answers

2
votes

My failure was that I did not fully/properly configure Kotlin.

I missed to apply the Kotlin plugin, which is done with these lines:

apply plugin: 'kotlin-android'

buildscript {
    ext.kotlin_version = '1.0.2'
    repositories {
        jcenter()
    }

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }

This is also a requirement if you want to use Kotlin code in plain JUnit tests.