可以在Kotlin中编写函数(即在顶层)。 我可以unit testing那些顶级?

如果我在顶层编写代码(在课堂之外)。

我可以编写此代码的JUnit测试,而无需为此测试目的创建类?

假设你在一个文件中有一个顶级函数:

// functions.kt package some.pack.age fun add(x: Int, y: Int) = x + y 

你可以像这样创建一个测试(在IntelliJ中创建这个文件的一个简单的方法是使用function名称上的Alt + Enter快捷键,并选择Create test ):

 // FunctionKtTest.kt - the default suggested name package some.pack.age import org.junit.Assert.* import org.junit.Test class FunctionsKtTest { @Test fun additionIsCorrect() { assertEquals(5, add(2, 3)) } } 

JUnit测试本身确实需要定义一个包含@Test函数的类,当然你可以任意指定这个类。

如果你把这个类放在与函数相同的包中,你甚至不需要导入它。 如果你把它放在另一个包中,你仍然可以像这样导入你的顶层函数:

 import some.pack.age.add