From 950af2eae104985a76137aedce954a6f58262ed7 Mon Sep 17 00:00:00 2001 From: Danil Pavlov Date: Thu, 26 Oct 2023 11:59:06 +0200 Subject: [PATCH] feat: using platform-specific apis (#3788) --- .../expect-actual-example.png | Bin 84925 -> 0 bytes .../multiplatform/expect-actual-gutter.png | Bin 0 -> 96492 bytes docs/images/multiplatform/expect-actual.png | Bin 59980 -> 0 bytes ...utter.png => expect-actual-gutter-sql.png} | Bin docs/kr.tree | 2 +- .../cross-platform-mobile-development.md | 2 +- ...atform-mobile-integrate-in-existing-app.md | 4 +- .../multiplatform-mobile-ktor-sqldelight.md | 4 +- ...orm-mobile-understand-project-structure.md | 2 +- .../multiplatform-configure-compilations.md | 2 +- .../multiplatform-connect-to-apis.md | 380 ------------ .../multiplatform-expect-actual.md | 553 ++++++++++++++++++ .../multiplatform-get-started.md | 2 +- .../multiplatform/multiplatform-hierarchy.md | 2 +- .../multiplatform/multiplatform-library.md | 2 +- .../multiplatform/multiplatform-run-tests.md | 396 ++----------- .../multiplatform-share-on-platforms.md | 6 +- docs/topics/multiplatform/multiplatform.md | 2 +- docs/topics/native-and-cross-platform.md | 2 +- docs/topics/sealed-classes.md | 4 +- docs/topics/whatsnew14.md | 2 +- redirects/pages.yml | 15 +- 22 files changed, 625 insertions(+), 757 deletions(-) delete mode 100644 docs/images/multiplatform-mobile/expect-actual-example.png create mode 100644 docs/images/multiplatform/expect-actual-gutter.png delete mode 100644 docs/images/multiplatform/expect-actual.png rename docs/images/tutorials/multiplatform/{expect-actual-gutter.png => expect-actual-gutter-sql.png} (100%) delete mode 100644 docs/topics/multiplatform/multiplatform-connect-to-apis.md create mode 100644 docs/topics/multiplatform/multiplatform-expect-actual.md diff --git a/docs/images/multiplatform-mobile/expect-actual-example.png b/docs/images/multiplatform-mobile/expect-actual-example.png deleted file mode 100644 index 56b8903583514977670f6e600fcefdc173fe9afb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84925 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 diff --git a/docs/images/multiplatform/expect-actual-gutter.png b/docs/images/multiplatform/expect-actual-gutter.png new file mode 100644 index 0000000000000000000000000000000000000000..9f971ba52e18bb49e8567fe6641bb4655a699e09 GIT binary patch literal 96492 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%0AJFreE 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 j2>aqcRri1MjpC?`p - + diff --git a/docs/topics/cross-platform-mobile-development.md b/docs/topics/cross-platform-mobile-development.md index 3c580d97885..4a88cf427b7 100644 --- a/docs/topics/cross-platform-mobile-development.md +++ b/docs/topics/cross-platform-mobile-development.md @@ -104,7 +104,7 @@ In our [Kotlin Multiplatform survey from Q1-Q2 2021](https://blog.jetbrains.com/ ![How are users satisfied with the quality of their app after Kotlin Multiplatform Mobile adoption?](survey-results-q1-q2-21.png){width=700} -Another concern is the inability to seamlessly support the native features of applications. Nevertheless, if you're building a multiplatform app that needs to access platform-specific APIs, you can use Kotlin's [expected and actual declarations](multiplatform-connect-to-apis.md). They allow you to define in common code that you "expect" to be able to call the same function across multiple platforms and provide the "actual" implementations, which can interact with any platform-specific libraries thanks to Kotlin interoperability with Java and Objective-C/Swift. +Another concern is the inability to seamlessly support the native features of applications. Nevertheless, if you're building a multiplatform app that needs to access platform-specific APIs, you can use Kotlin's [expected and actual declarations](multiplatform-expect-actual.md). They allow you to define in common code that you "expect" to be able to call the same function across multiple platforms and provide the "actual" implementations, which can interact with any platform-specific libraries thanks to Kotlin interoperability with Java and Objective-C/Swift. These issues raise the question of whether the end-user will notice a difference between native and cross-platform apps. diff --git a/docs/topics/multiplatform-mobile/multiplatform-mobile-integrate-in-existing-app.md b/docs/topics/multiplatform-mobile/multiplatform-mobile-integrate-in-existing-app.md index b2bdfb55778..39cc1a5c52c 100644 --- a/docs/topics/multiplatform-mobile/multiplatform-mobile-integrate-in-existing-app.md +++ b/docs/topics/multiplatform-mobile/multiplatform-mobile-integrate-in-existing-app.md @@ -142,7 +142,7 @@ This is necessary for reusing the code for both Android and iOS. ![Warnings about platform-dependent code](warnings-android-specific-code.png){width=450} 4. Remove Android-specific code by replacing it with cross-platform Kotlin code or connecting to Android-specific APIs - using [`expect` and `actual` declarations](multiplatform-connect-to-apis.md). See the following sections for details: + using [expected and actual declarations](multiplatform-expect-actual.md). See the following sections for details: #### Replace Android-specific code with cross-platform code {initial-collapse-state="collapsed"} @@ -200,7 +200,7 @@ platform-specific functionality for this case. Provide the `expect` declaration for the `randomUUID()` function in the shared code and its `actual` implementations for each platform – Android and iOS – in the corresponding source sets. -You can learn more about [connecting to platform-specific APIs](multiplatform-connect-to-apis.md). +Learn more about [expected and actual declarations](multiplatform-expect-actual.md). 1. Remove the `java.util.UUID` class from the common code: diff --git a/docs/topics/multiplatform-mobile/multiplatform-mobile-ktor-sqldelight.md b/docs/topics/multiplatform-mobile/multiplatform-mobile-ktor-sqldelight.md index 66ba260ea30..5937195254b 100644 --- a/docs/topics/multiplatform-mobile/multiplatform-mobile-ktor-sqldelight.md +++ b/docs/topics/multiplatform-mobile/multiplatform-mobile-ktor-sqldelight.md @@ -236,7 +236,7 @@ directory. The generator will create an interface named `AppDatabase`, as specif To initialize `AppDatabase`, pass an `SqlDriver` instance to it. SQLDelight provides multiple platform-specific implementations of the SQLite driver, so you need to create them for each platform separately. You can do this by using -[expected and actual declarations](multiplatform-connect-to-apis.md). +[expected and actual declarations](multiplatform-expect-actual.md). 1. Create an abstract factory for database drivers. To do this, in `shared/src/commonMain/kotlin`, create the `com.jetbrains.handson.kmm.shared.cache` package and the `DatabaseDriverFactory` class inside it: @@ -294,7 +294,7 @@ Instances of these factories will be created later in the code of your Android a You can navigate through the `expect` declarations and `actual` implementations by clicking the handy gutter icon: -![Expect/Actual gutter](expect-actual-gutter.png){width=500} +![Expect/Actual gutter](expect-actual-gutter-sql.png){width=500} ### Implement cache diff --git a/docs/topics/multiplatform-mobile/multiplatform-mobile-understand-project-structure.md b/docs/topics/multiplatform-mobile/multiplatform-mobile-understand-project-structure.md index 1b3cda4d5ab..de8f354b481 100644 --- a/docs/topics/multiplatform-mobile/multiplatform-mobile-understand-project-structure.md +++ b/docs/topics/multiplatform-mobile/multiplatform-mobile-understand-project-structure.md @@ -102,7 +102,7 @@ kotlin { The shared module contains the code that is common for Android and iOS applications. However, to implement the same logic on Android and iOS, you sometimes need to write two platform-specific versions of it. -To handle such cases, Kotlin offers the [expect/actual](multiplatform-connect-to-apis.md) mechanism. +To handle such cases, Kotlin offers the [expect/actual](multiplatform-expect-actual.md) mechanism. The source code of the shared module is organized in three source sets accordingly: * `commonMain` stores the code that works on both platforms, including the `expect` declarations diff --git a/docs/topics/multiplatform/multiplatform-configure-compilations.md b/docs/topics/multiplatform/multiplatform-configure-compilations.md index 694bbb9f5c8..8c1120fb24c 100644 --- a/docs/topics/multiplatform/multiplatform-configure-compilations.md +++ b/docs/topics/multiplatform/multiplatform-configure-compilations.md @@ -345,7 +345,7 @@ If the source set `jvmMain` depends on a source set `commonMain` then: compiled into the same target binary form, such as JVM class files. * Sources of `jvmMain` 'see' the declarations of `commonMain`, including internal declarations, and also see the [dependencies](multiplatform-add-dependencies.md) of `commonMain`, even those specified as `implementation` dependencies. -* `jvmMain` can contain platform-specific implementations for the [expected declarations](multiplatform-connect-to-apis.md) +* `jvmMain` can contain platform-specific implementations for the [expected declarations](multiplatform-expect-actual.md) of `commonMain`. * The resources of `commonMain` are always processed and copied along with the resources of `jvmMain`. * The [language settings](multiplatform-dsl-reference.md#language-settings) of `jvmMain` and `commonMain` should be consistent. diff --git a/docs/topics/multiplatform/multiplatform-connect-to-apis.md b/docs/topics/multiplatform/multiplatform-connect-to-apis.md deleted file mode 100644 index c4b5ed5a60d..00000000000 --- a/docs/topics/multiplatform/multiplatform-connect-to-apis.md +++ /dev/null @@ -1,380 +0,0 @@ -[//]: # (title: Connect to platform-specific APIs) - -> The `expect`/`actual` feature is in [Beta](components-stability.md). It is almost stable, but migration steps may be required in the future. -> We'll do our best to minimize any changes you will have to make. -> -{type="warning"} - -If you're developing a multiplatform application that needs to access platform-specific APIs that implement the required -functionality (for example, [generating a UUID](#generate-a-uuid)), use the Kotlin mechanism of _expected and actual declarations_. - -With this mechanism, a common source set defines an _expected declaration_, and platform source sets must provide the -_actual declaration_ that corresponds to the expected declaration. This works for most Kotlin declarations, such as -functions, classes, interfaces, enumerations, properties, and annotations. - -![Expect/actual declarations in common and platform-specific modules](expect-actual.png){width=700} - -The compiler ensures that every declaration marked with the `expect` keyword in the common module has the corresponding -declarations marked with the `actual` keyword in all platform modules. The IDE provides tools that help you create the missing actual declarations. - -> Use expected and actual declarations only for Kotlin declarations that have platform-specific -> dependencies. Implementing as much functionality as possible in the shared module is better, even if doing so takes -> more time. -> -> Don't overuse expected and actual declarations – in some cases, an [interface](interfaces.md) may be a better choice -> because it is more flexible and easier to test. -> -{type="note"} - -Learn how to [add dependencies on platform-specific libraries](multiplatform-add-dependencies.md). - -## Examples - -For simplicity, the following examples use intuitive target names, like iOS and Android. However, in your Gradle build files, -you need to use a specific target name from [the list of supported targets](multiplatform-dsl-reference.md#targets). - -#### Generate a UUID {initial-collapse-state="collapsed"} - -Let's assume that you are developing iOS and Android applications using Kotlin Multiplatform and you want to -generate a universally unique identifier (UUID): - -![Expect/actual declarations for getting the UUID](expect-actual-example.png){width=700} - -For this purpose, declare the expected function `randomUUID()` with the `expect` keyword in the common module. -Don't include any implementation code. - -```kotlin -// Common -expect fun randomUUID(): String -``` - -In each platform-specific module (iOS and Android), provide the actual implementation for the function `randomUUID()` -expected in the common module. Use the `actual` keyword to mark the actual implementation. - -The following examples show the implementation of this for Android and iOS. -Platform-specific code uses the `actual` keyword and the expected name for the function. - -```kotlin -// Android -import java.util.* - -actual fun randomUUID() = UUID.randomUUID().toString() -``` - -```kotlin -// iOS -import platform.Foundation.NSUUID - -actual fun randomUUID(): String = NSUUID().UUIDString() -``` - -#### Implement a logging framework {initial-collapse-state="collapsed"} - -Another example of code sharing and interaction between the common and platform logic, JS and JVM in this case, in a minimalistic -logging framework: - -```kotlin -// Common -enum class LogLevel { - DEBUG, WARN, ERROR -} - -internal expect fun writeLogMessage(message: String, logLevel: LogLevel) - -fun logDebug(message: String) = writeLogMessage(message, LogLevel.DEBUG) -fun logWarn(message: String) = writeLogMessage(message, LogLevel.WARN) -fun logError(message: String) = writeLogMessage(message, LogLevel.ERROR) -``` - -```kotlin -// JVM -internal actual fun writeLogMessage(message: String, logLevel: LogLevel) { - println("[$logLevel]: $message") -} -``` - -For JavaScript, a completely different set of APIs is available, and the `actual` declaration will look like this. - -```kotlin -// JS -internal actual fun writeLogMessage(message: String, logLevel: LogLevel) { - when (logLevel) { - LogLevel.DEBUG -> console.log(message) - LogLevel.WARN -> console.warn(message) - LogLevel.ERROR -> console.error(message) - } -} -``` - -#### Send and receive messages from a WebSocket {initial-collapse-state="collapsed"} - -Consider developing a chat platform for iOS and Android using Kotlin Multiplatform. -Let's see how you can implement sending and receiving messages from a WebSocket. - -For this purpose, define a common logic that you don't need to duplicate in all platform modules – -just add it once to the common module. However, the actual implementation of the WebSocket class differs -from platform to platform. That's why you should use `expect`/`actual` declarations for this class. - -In the common module, declare the expected class `PlatformSocket()` with the `expect` keyword. Don't include any implementation code. - -```kotlin -//Common -internal expect class PlatformSocket( - url: String -) { - fun openSocket(listener: PlatformSocketListener) - fun closeSocket(code: Int, reason: String) - fun sendMessage(msg: String) -} -interface PlatformSocketListener { - fun onOpen() - fun onFailure(t: Throwable) - fun onMessage(msg: String) - fun onClosing(code: Int, reason: String) - fun onClosed(code: Int, reason: String) -} -``` - -In each platform-specific module (iOS and Android), provide the actual implementation for the class `PlatformSocket()` -expected in the common module. Use the `actual` keyword to mark the actual implementation. - -The following examples show the implementation of this for Android and iOS. - -```kotlin -//Android -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.Response -import okhttp3.WebSocket - -internal actual class PlatformSocket actual constructor(url: String) { - private val socketEndpoint = url - private var webSocket: WebSocket? = null - actual fun openSocket(listener: PlatformSocketListener) { - val socketRequest = Request.Builder().url(socketEndpoint).build() - val webClient = OkHttpClient().newBuilder().build() - webSocket = webClient.newWebSocket( - socketRequest, - object : okhttp3.WebSocketListener() { - override fun onOpen(webSocket: WebSocket, response: Response) = listener.onOpen() - override fun onFailure(webSocket: WebSocket, t: Throwable, response: Response?) = listener.onFailure(t) - override fun onMessage(webSocket: WebSocket, text: String) = listener.onMessage(text) - override fun onClosing(webSocket: WebSocket, code: Int, reason: String) = listener.onClosing(code, reason) - override fun onClosed(webSocket: WebSocket, code: Int, reason: String) = listener.onClosed(code, reason) - } - ) - } - actual fun closeSocket(code: Int, reason: String) { - webSocket?.close(code, reason) - webSocket = null - } - actual fun sendMessage(msg: String) { - webSocket?.send(msg) - } -} -``` - -Android implementation uses the third-party library [OkHttp](https://square.github.io/okhttp/). Add the corresponding dependency to `build.gradle(.kts)` in the shared module: - - - - -```kotlin -sourceSets { - val androidMain by getting { - dependencies { - implementation("com.squareup.okhttp3:okhttp:$okhttp_version") - } - } -} -``` - - - - -```groovy -commonMain { - dependencies { - implementation "com.squareup.okhttp3:okhttp:$okhttp_version" - } -} -``` - - - - -iOS implementation uses `NSURLSession` from the standard Apple SDK and doesn't require additional dependencies. - -```kotlin -//iOS -import platform.Foundation.* -import platform.darwin.NSObject - -internal actual class PlatformSocket actual constructor(url: String) { - private val socketEndpoint = NSURL.URLWithString(url)!! - private var webSocket: NSURLSessionWebSocketTask? = null - actual fun openSocket(listener: PlatformSocketListener) { - val urlSession = NSURLSession.sessionWithConfiguration( - configuration = NSURLSessionConfiguration.defaultSessionConfiguration(), - delegate = object : NSObject(), NSURLSessionWebSocketDelegateProtocol { - override fun URLSession( - session: NSURLSession, - webSocketTask: NSURLSessionWebSocketTask, - didOpenWithProtocol: String? - ) { - listener.onOpen() - } - override fun URLSession( - session: NSURLSession, - webSocketTask: NSURLSessionWebSocketTask, - didCloseWithCode: NSURLSessionWebSocketCloseCode, - reason: NSData? - ) { - listener.onClosed(didCloseWithCode.toInt(), reason.toString()) - } - }, - delegateQueue = NSOperationQueue.currentQueue() - ) - webSocket = urlSession.webSocketTaskWithURL(socketEndpoint) - listenMessages(listener) - webSocket?.resume() - } - private fun listenMessages(listener: PlatformSocketListener) { - webSocket?.receiveMessageWithCompletionHandler { message, nsError -> - when { - nsError != null -> { - listener.onFailure(Throwable(nsError.description)) - } - message != null -> { - message.string?.let { listener.onMessage(it) } - } - } - listenMessages(listener) - } - } - actual fun closeSocket(code: Int, reason: String) { - webSocket?.cancelWithCloseCode(code.toLong(), null) - webSocket = null - } - actual fun sendMessage(msg: String) { - val message = NSURLSessionWebSocketMessage(msg) - webSocket?.sendMessage(message) { err -> - err?.let { println("send $msg error: $it") } - } - } -} -``` - -And here is the common logic in the common module that uses the platform-specific class `PlatformSocket()`. - -```kotlin -//Common -class AppSocket(url: String) { - private val ws = PlatformSocket(url) - var socketError: Throwable? = null - private set - var currentState: State = State.CLOSED - private set(value) { - field = value - stateListener?.invoke(value) - } - var stateListener: ((State) -> Unit)? = null - set(value) { - field = value - value?.invoke(currentState) - } - var messageListener: ((msg: String) -> Unit)? = null - fun connect() { - if (currentState != State.CLOSED) { - throw IllegalStateException("The socket is available.") - } - socketError = null - currentState = State.CONNECTING - ws.openSocket(socketListener) - } - fun disconnect() { - if (currentState != State.CLOSED) { - currentState = State.CLOSING - ws.closeSocket(1000, "The user has closed the connection.") - } - } - fun send(msg: String) { - if (currentState != State.CONNECTED) throw IllegalStateException("The connection is lost.") - ws.sendMessage(msg) - } - private val socketListener = object : PlatformSocketListener { - override fun onOpen() { - currentState = State.CONNECTED - } - override fun onFailure(t: Throwable) { - socketError = t - currentState = State.CLOSED - } - override fun onMessage(msg: String) { - messageListener?.invoke(msg) - } - override fun onClosing(code: Int, reason: String) { - currentState = State.CLOSING - } - override fun onClosed(code: Int, reason: String) { - currentState = State.CLOSED - } - } - enum class State { - CONNECTING, - CONNECTED, - CLOSING, - CLOSED - } -} -``` - -## Rules for expected and actual declarations - -The main rules regarding expected and actual declarations are: -* An expected declaration is marked with the `expect` keyword; the actual declaration is marked with the `actual` keyword. -* `expect` and `actual` declarations have the same name and are located in the same package (have the same fully qualified name). -* `expect` declarations never contain any implementation code and are abstract by default. -* In interfaces, functions in `expect` declarations cannot have bodies, but their `actual` counterparts can be non-abstract -and have a body. It allows the inheritors not to implement a particular function. - - To indicate that common inheritors don't need to implement a function, mark it as `open`. All its `actual` implementations -will be required to have a body: - - ```kotlin - // Common - expect interface Mascot { - open fun display(): String - } - - class MascotImpl : Mascot { - // it's ok not to implement `display()`: all `actual`s are guaranteed to have a default implementation - } - - // Platform-specific - actual interface Mascot { - actual fun display(): String { - TODO() - } - } - ``` - -During each platform compilation, the compiler ensures that every declaration marked with the `expect` keyword in the common -or intermediate source set has the corresponding declarations marked with the `actual` keyword in all platform source sets. -The IDE provides tools that help you create the missing actual declarations. - -If you have a platform-specific library that you want to use in shared code while providing your own implementation for -another platform, you can provide a `typealias` to an existing class as the actual declaration: - -```kotlin -expect class AtomicRef(value: V) { - fun get(): V - fun set(value: V) - fun getAndSet(value: V): V - fun compareAndSet(expect: V, update: V): Boolean -} -``` - -```kotlin -actual typealias AtomicRef = java.util.concurrent.atomic.AtomicReference -``` diff --git a/docs/topics/multiplatform/multiplatform-expect-actual.md b/docs/topics/multiplatform/multiplatform-expect-actual.md new file mode 100644 index 00000000000..33a12b87658 --- /dev/null +++ b/docs/topics/multiplatform/multiplatform-expect-actual.md @@ -0,0 +1,553 @@ +[//]: # (title: Expected and actual declarations) + +> The mechanism of expected and actual declarations is in [Beta](components-stability.md). +> It's almost stable, but migration steps may be required in the future. +> We'll do our best to minimize any further changes for you to make. +> +{type="warning"} + +Expected and actual declarations allow you to access platform-specific APIs from Kotlin Multiplatform modules. +You can provide platform-agnostic APIs in the common code. + +> This article describes the language mechanism of expected and actual declarations. For general recommendations on +> different ways to use platform-specific APIs, see [Use platform-specific APIs](https://www.jetbrains.com/help/kotlin-multiplatform-dev/multiplatform-connect-to-apis.html). +> +{type="tip"} + +## Rules for expected and actual declarations + +To define expected and actual declarations, follow these rules: + +1. In the common source set, declare a standard Kotlin construct. This can be a function, property, class, interface, + enumeration, or annotation. +2. Mark this construct with the `expect` keyword. This is your _expected declaration_. These declarations can be used in the + common code, but shouldn't include any implementation. Instead, the platform-specific code provides this implementation. +3. In each platform-specific source set, declare the same construct in the same package and mark it with the `actual` + keyword. This is your _actual declaration_, which typically contains an implementation using platform-specific libraries. + +During compilation for a specific target, the compiler tries to match each _actual_ declaration it finds with the +corresponding _expected_ declaration in the common code. The compiler ensures that: + +* Every expected declaration in the common source set has a matching actual declaration in every platform-specific + source set. +* Expected declarations don't contain any implementation. +* Every actual declaration shares the same package as the corresponding expected declaration, such as `org.mygroup.myapp.MyType`. + +While generating the resulting code for different platforms, the Kotlin compiler merges the expected and actual +declarations that correspond to each other. It generates one declaration with its actual implementation for each platform. +Every use of the expected declaration in the common code calls the correct actual declaration in the +resulting platform code. + +You can declare actual declarations when you use intermediate source sets shared between different target platforms. +Consider, for example, `iosMain` as an intermediate source set shared between the `iosX64Main`, `iosArm64Main`, +and `iosSimulatorArm64Main`platform source sets. Only `iosMain` typically contains the actual declarations and not the +platform source sets. The Kotlin compiler will then use these actual declarations to produce the resulting code for the +corresponding platforms. + +The IDE assists with common issues, including: + +* Missing declarations +* Expected declarations that contain implementations +* Mismatched declaration signatures +* Declarations in different packages + +You can also use the IDE to navigate from expected to actual declarations. Select the gutter icon to view actual +declarations or use [shortcuts](https://www.jetbrains.com/help/idea/navigating-through-the-source-code.html#go_to_implementation). + +![IDE navigation from expected to actual declarations](expect-actual-gutter.png){width=500} + +## Different approaches for using expected and actual declarations + +Let's explore the different options of using the expect/actual mechanism to solve the problem of accessing +platform APIs while still providing a way to work with them in the common code. + +Consider a Kotlin Multiplatform project where you need to implement the `Identity` type, which should contain the user's +login name and the current process ID. The project has the `commonMain`, `jvmMain`, and `nativeMain` source sets to make +the application work on the JVM and in native environments like iOS. + +### Expected and actual functions + +You can define an `Identity` type and a factory function `buildIdentity()`, which is declared in the common source set +and implemented differently in platform source sets: + +1. In `commonMain`, declare a simple type and expect a factory function: + + ```kotlin + package identity + + class Identity(val userName: String, val processID: Long) + + expect fun buildIdentity(): Identity + ``` + +2. In the `jvmMain` source set, implement a solution using standard Java libraries: + + ```kotlin + package identity + + import java.lang.System + import java.lang.ProcessHandle + + actual fun buildIdentity() = Identity( + System.getProperty("user.name") ?: "None", + ProcessHandle.current().pid() + ) + ``` + +3. In the `nativeMain` source set, implement a solution with [POSIX](https://en.wikipedia.org/wiki/POSIX) using native + dependencies: + + ```kotlin + package identity + + import kotlinx.cinterop.toKString + import platform.posix.getlogin + import platform.posix.getpid + + actual fun buildIdentity() = Identity( + getlogin()?.toKString() ?: "None", + getpid().toLong() + ) + ``` + + Here, platform functions return platform-specific `Identity` instances. + +> Starting with Kotlin 1.9.0, using `getlogin()` and `getpid()` functions requires the `@OptIn` annotation. +> +{type="note"} + +### Interfaces with expected and actual functions + +If the factory function becomes too large, consider using a common `Identity` interface and implementing it differently on +different platforms. + +A `buildIdentity()` factory function should return `Identity`, but this time, it's an object implementing the +common interface: + +1. In `commonMain`, define the `Identity` interface and the `buildIdentity()` factory function: + + ```kotlin + // In the commonMain source set: + expect fun buildIdentity(): Identity + + interface Identity { + val userName: String + val processID: Long + } + ``` + +2. Create platform-specific implementations of the interface without additional use of expected and actual declarations: + + ```kotlin + // In the jvmMain source set: + actual fun buildIdentity(): Identity = JVMIdentity() + + class JVMIdentity( + override val userName: String = System.getProperty("user.name") ?: "none", + override val processID: Long = ProcessHandle.current().pid() + ) : Identity + ``` + + ```kotlin + // In the nativeMain source set: + actual fun buildIdentity(): Identity = NativeIdentity() + + class NativeIdentity( + override val userName: String = getlogin()?.toKString() ?: "None", + override val processID: Long = getpid().toLong() + ) : Identity + ``` + +These platform functions return platform-specific `Identity` instances, which are implemented as `JVMIdentity` +and `NativeIdentity` platform types. + +#### Expected and actual properties + +You can modify the previous example and expect a `val` property to store an `Identity`. + +Mark this property as `expect val` and then actualize it in the platform source sets: + +```kotlin +//In commonMain source set: +expect val identity: Identity + +interface Identity { + val userName: String + val processID: Long +} +``` + +```kotlin +//In jvmMain source set: +actual val identity: Identity = JVMIdentity() + +class JVMIdentity( + override val userName: String = System.getProperty("user.name") ?: "none", + override val processID: Long = ProcessHandle.current().pid() +) : Identity +``` + +```kotlin +//In nativeMain source set: +actual val identity: Identity = NativeIdentity() + +class NativeIdentity( + override val userName: String = getlogin()?.toKString() ?: "None", + override val processID: Long = getpid().toLong() +) : Identity +``` + +#### Expected and actual objects + +When `IdentityBuilder` is expected to be a singleton on each platform, you can define it as an expected object and let the +platforms actualize it: + +```kotlin +// In the commonMain source set: +expect object IdentityBuilder { + fun build(): Identity +} + +class Identity( + val userName: String, + val processID: Long +) +``` + +```kotlin +// In the jvmMain source set: +actual object IdentityBuilder { + actual fun build() = Identity( + System.getProperty("user.name") ?: "none", + ProcessHandle.current().pid() + ) +} +``` + +```kotlin +// In the nativeMain source set: +actual object IdentityBuilder { + actual fun build() = Identity( + getlogin()?.toKString() ?: "None", + getpid().toLong() + ) +} +``` + +#### Recommendations on dependency injection + +To create a loosely coupled architecture, many Kotlin projects adopt the dependency injection (DI) framework. The DI +framework allows injecting dependencies into components based on the current environment. + +For example, you might inject different dependencies in testing and in production or when deploying to the cloud +compared to hosting locally. As long as a dependency is expressed through an interface, any number of different +implementations can be injected, either at compile time or at runtime. + +The same principle applies when the dependencies are platform-specific. In the common code, a component can express its +dependencies using regular [Kotlin interfaces](interfaces.md). The DI framework can then be configured to inject a +platform-specific implementation, for example, from the JVM or an iOS module. + +This means that expected and actual declarations are only needed in the configuration of the DI +framework. See [Use platform-specific APIs](https://www.jetbrains.com/help/kotlin-multiplatform-dev/multiplatform-connect-to-apis.html#dependency-injection-framework) for examples. + +With this approach, you can adopt Kotlin Multiplatform simply by using interfaces and factory functions. If you already +use the DI framework to manage dependencies in your project, we recommend using the same approach for managing +platform dependencies. + +### Expected and actual classes + +You can use expected and actual classes to implement the same solution: + +```kotlin +// In the commonMain source set: +expect class Identity() { + val userName: String + val processID: Int +} +``` + +```kotlin +// In the jvmMain source set: +actual class Identity { + actual val userName: String = System.getProperty("user.name") ?: "None" + actual val processID: Long = ProcessHandle.current().pid() +} +``` + +```kotlin +// In the nativeMain source set: +actual class Identity { + actual val userName: String = getlogin()?.toKString() ?: "None" + actual val processID: Long = getpid().toLong() +} +``` + +You might have already seen this approach in demonstration materials. However, using classes in simple cases where +interfaces would be sufficient is _not recommended_. + +With interfaces, you don't limit your design to one implementation per target platform. Also, it's much easier to +substitute a fake implementation in tests or provide multiple implementations on a single platform. + +As a general rule, rely on standard language constructs wherever possible instead of using expected and actual declarations. + +#### Inheritance from platform classes + +There are special cases when using the `expect` keyword with classes may be the best approach. Let's say that +the `Identity` type already exists on the JVM: + +```kotlin +open class Identity { + val login: String = System.getProperty("user.name") ?: "none" + val pid: Long = ProcessHandle.current().pid() +} +``` + +To fit it in the existing codebase and frameworks, your implementation of the `Identity` type can inherit from this type +and reuse its functionality: + +1. To solve this problem, declare a class in `commonMain` using the `expect` keyword: + + ```kotlin + expect class CommonIdentity() { + val userName: String + val processID: Long + } + ``` + +2. In `nativeMain`, provide an actual declaration that implements the functionality: + + ```kotlin + actual class CommonIdentity { + actual val userName = getlogin()?.toKString() ?: "None" + actual val processID = getpid().toLong() + } + ``` + +3. In `jvmMain`, provide an actual declaration that inherits from the platform-specific base class: + + ```kotlin + actual class CommonIdentity : Identity() { + actual val userName = login + actual val processID = pid + } + ``` + +Here, the `CommonIdentity` type is compatible with your own design while taking advantage of the existing type on the JVM. + +#### Application in frameworks + +As a framework author, you can also find expected and actual declarations useful for your framework. + +If the example above is part of a framework, the user has to derive a type from `CommonIdentity` to provide +a display name. + +In this case, the expected declaration is abstract and declares an abstract method: + +```kotlin +// In commonMain of the framework codebase: +expect abstract class CommonIdentity() { + val userName: String + val processID: Long + abstract val displayName: String +} +``` + +Similarly, actual implementations are abstract and declare the `displayName` method: + +```kotlin +// In nativeMain of the framework codebase: +actual abstract class CommonIdentity { + actual val userName = getlogin()?.toKString() ?: "None" + actual val processID = getpid().toLong() + actual abstract val displayName: String +} +``` + +```kotlin +// In jvmMain of the framework codebase: +actual abstract class CommonIdentity : Identity() { + actual val userName = login + actual val processID = pid + actual abstract val displayName: String +} +``` + +The framework users need to write common code that inherits from the expected declaration and implement the missing +method themselves: + +```kotlin +// In commonMain of the users' codebase: +class MyCommonIdentity : CommonIdentity() { + override val displayName = "Admin" +} +``` + + + +## Advanced use cases + +There are a number of special cases regarding expected and actual declarations. + +### Using type aliases to satisfy actual declarations + +The implementation of an actual declaration does not have to be written from scratch. It can be an existing type, such +as a class provided by a third-party library. + +You can use this type as long as it meets all the requirements associated with the expected declaration. For example, +consider these two expected declarations: + +```kotlin +expect enum class Month { + JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, + AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER +} + +expect class MyDate { + fun getYear(): Int + fun getMonth(): Month + fun getDayOfMonth(): Int +} +``` + +Within a JVM module, the `java.time.Month` enum can be used to implement the first expected declaration and +the `java.time.LocalDate` class to implement the second. However, there's no way to add the `actual` keyword directly to +these types. + +Instead, you can use [type aliases](type-aliases.md) to connect the expected declarations and the platform-specific +types: + +```kotlin +actual typealias Month = java.time.Month +actual typealias MyDate = java.time.LocalDate +``` + +In this case, define the `typealias` declaration in the same package as the expected declaration and create the +referred class elsewhere. + +> Since the `LocalDate` type uses the `Month` enum, you need to declare both of them as expected classes in the common code. +> +{type="note"} + + + +### Expanded visibility in actual declarations + +You can make actual implementations more visible than the corresponding expected declaration. This is useful if you +don't want to expose your API as public for common clients. + +Currently, the Kotlin compiler issues an error in the case of visibility changes. You can suppress this error by +applying `@Suppress("ACTUAL_WITHOUT_EXPECT")` to the actual type alias declaration. Starting with Kotlin 2.0, +this limitation will not apply. + +For example, if you declare the following expected declaration in the common source set: + +```kotlin +internal expect class Messenger { + fun sendMessage(message: String) +} +``` + +You can use the following actual implementation in a platform-specific source set as well: + +```kotlin +@Suppress("ACTUAL_WITHOUT_EXPECT") +public actual typealias Messenger = MyMessenger +``` + +Here, an internal expected class has an actual implementation with an existing public `MyMessenger` using type aliases. + +### Additional enumeration entries on actualization + +When an enumeration is declared with `expect` in the common source set, each platform module should have a +corresponding `actual` declaration. These declarations must contain the same enum constants, but they can also have +additional constants. + +This is useful when you actualize an expected enum with an existing platform enum. For example, consider the +following enumeration in the common source set: + +```kotlin +// In the commonMain source set: +expect enum class Department { IT, HR, Sales } +``` + +When you provide an actual declaration for `Department` in platform source sets, you can add extra constants: + +```kotlin +// In the jvmMain source set: +actual enum class Department { IT, HR, Sales, Legal } +``` + +```kotlin +// In the nativeMain source set: +actual enum class Department { IT, HR, Sales, Marketing } +``` + +However, in this case, these extra constants in the platform source sets won't match with those in the common code. +Therefore, the compiler requires you to handle all additional cases. + +The function that implements the `when` construction on `Department` requires an `else` clause: + +```kotlin +// An else clause is required: +fun matchOnDepartment(dept: Department) { + when (dept) { + Department.IT -> println("The IT Department") + Department.HR -> println("The IT Department") + Department.Sales -> println("The IT Department") + else -> println("Some other department") + } +} +``` + + + +### Expected annotation classes + +Expected and actual declarations can be used with annotations. For example, you can declare an `@XmlSerializable` +annotation, which must have a corresponding actual declaration in each platform source set: + +```kotlin +@Target(AnnotationTarget.CLASS) +@Retention(AnnotationRetention.SOURCE) +expect annotation class XmlSerializable() + +@XmlSerializable +class Person(val name: String, val age: Int) +``` + +It might be helpful to reuse existing types on a particular platform. For example, on the JVM, you can define your +annotation using the existing type from the [JAXB specification](https://javaee.github.io/jaxb-v2/): + +```kotlin +import javax.xml.bind.annotation.XmlRootElement + +actual typealias XmlSerializable = XmlRootElement +``` + +There is an additional consideration when using `expect` with annotation classes. Annotations are used to attach +metadata to code and do not appear as types in signatures. It's not essential for an expected annotation to have an +actual class on a platform where it's never required. + +You only need to provide an `actual` declaration on platforms where the annotation is used. This +behavior isn't enabled by default, and it requires the type to be marked with [`OptionalExpectation`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-optional-expectation/). + +Take the `@XmlSerializable` annotation declared above and add `OptionalExpectation`: + +```kotlin +@OptIn(ExperimentalMultiplatform::class) +@Target(AnnotationTarget.CLASS) +@Retention(AnnotationRetention.SOURCE) +@OptionalExpectation +expect annotation class XmlSerializable() +``` + +If an actual declaration is missing on a platform where it's not required, the compiler won't generate an +error. + +## What's next? + +For general recommendations on different ways to use platform-specific APIs, see [Use platform-specific APIs](https://www.jetbrains.com/help/kotlin-multiplatform-dev/multiplatform-connect-to-apis.html). \ No newline at end of file diff --git a/docs/topics/multiplatform/multiplatform-get-started.md b/docs/topics/multiplatform/multiplatform-get-started.md index 482a9578427..c87ccfbfb40 100644 --- a/docs/topics/multiplatform/multiplatform-get-started.md +++ b/docs/topics/multiplatform/multiplatform-get-started.md @@ -28,7 +28,7 @@ Learn more about [Kotlin Multiplatform benefits](multiplatform.md). Once you have gained some experience with Kotlin Multiplatform and want to know how to solve particular cross-platform development tasks: * [Share code on platforms](multiplatform-share-on-platforms.md) in your Kotlin Multiplatform project. -* [Connect to platform-specific APIs](multiplatform-connect-to-apis.md) using the Kotlin mechanism of expected and actual declarations. +* [Connect to platform-specific APIs](https://www.jetbrains.com/help/kotlin-multiplatform-dev/multiplatform-connect-to-apis.html) when developing multiplatform applications and libraries. * [Set up targets manually](multiplatform-set-up-targets.md) for your Kotlin Multiplatform project. * [Add dependencies](multiplatform-add-dependencies.md) on the standard, test, or another kotlinx library. * [Configure compilations](multiplatform-configure-compilations.md) for production and test purposes in your project. diff --git a/docs/topics/multiplatform/multiplatform-hierarchy.md b/docs/topics/multiplatform/multiplatform-hierarchy.md index 2fbf8a1b1b0..c2b26bd5190 100644 --- a/docs/topics/multiplatform/multiplatform-hierarchy.md +++ b/docs/topics/multiplatform/multiplatform-hierarchy.md @@ -414,4 +414,4 @@ Kotlin doesn't currently support sharing a source set for these combinations: If you need to access platform-specific APIs from a shared native source set, IntelliJ IDEA will help you detect common declarations that you can use in the shared native code. -For other cases, use the Kotlin mechanism of [expected and actual declarations](multiplatform-connect-to-apis.md). \ No newline at end of file +For other cases, use the Kotlin mechanism of [expected and actual declarations](multiplatform-expect-actual.md). \ No newline at end of file diff --git a/docs/topics/multiplatform/multiplatform-library.md b/docs/topics/multiplatform/multiplatform-library.md index d42536cfb23..c82fe35fcdb 100644 --- a/docs/topics/multiplatform/multiplatform-library.md +++ b/docs/topics/multiplatform/multiplatform-library.md @@ -65,7 +65,7 @@ Define the classes and interfaces you are going to implement in the common code. The factory object is marked with the `expect` keyword in the cross-platform code. For each platform, you should provide an `actual` implementation of the `Base64Factory` object with the platform-specific encoder. -Learn more about [platform-specific implementations](multiplatform-connect-to-apis.md). +Learn more about [platform-specific implementations](multiplatform-expect-actual.md). ## Provide platform-specific implementations diff --git a/docs/topics/multiplatform/multiplatform-run-tests.md b/docs/topics/multiplatform/multiplatform-run-tests.md index cc3c5afc7f6..52dff8ccb7e 100644 --- a/docs/topics/multiplatform/multiplatform-run-tests.md +++ b/docs/topics/multiplatform/multiplatform-run-tests.md @@ -1,375 +1,67 @@ -[//]: # (title: Test your multiplatform app − tutorial) +[//]: # (title: Run tests with Kotlin Multiplatform) -In this tutorial, you'll learn how to create, configure, and run tests in Kotlin Multiplatform applications. +By default, Kotlin supports running tests for JVM, JS, Android, Linux, Windows, macOS as well as iOS, watchOS, and tvOS simulators. +To run tests for other Kotlin/Native targets, you need to configure them manually in an appropriate environment, emulator, +or test framework. -Tests for multiplatform projects can be divided into two categories: +## Required dependencies -* Tests for common code. These tests can be run on any platform using any supported framework. -* Tests for platform-specific code. These are essential to test platform-specific logic. They use a platform-specific - framework and can benefit from its additional features, such as a richer API and a wider range of assertions. +The [`kotlin.test` API](https://kotlinlang.org/api/latest/kotlin.test/) is available for multiplatform tests. When you +[create a multiplatform project](multiplatform-library.md), the Project Wizard automatically adds test dependencies to +common and platform-specific source sets. -Both categories are supported in multiplatform projects. This tutorial will first show you how to set up, create, -and run unit tests for common code in a simple Kotlin Multiplatform project. Then you'll work with a more complex example -that requires tests both for common and platform-specific code. +If you didn't use the Project Wizard to create your project, you can [add the dependencies manually](gradle-configure-project.md#set-dependencies-on-test-libraries). -> This tutorial assumes that you are familiar with: -> * The layout of a Kotlin Multiplatform project. If this is not the case, - complete [this tutorial](multiplatform-mobile-getting-started.md) before you begin. -> * The basics of popular unit testing frameworks, such as [JUnit](https://junit.org/junit5/). -> -{type="tip"} +## Run tests for one or more targets -## Test a simple multiplatform project +To run tests for all targets, run the `check` task. -### Create your project +To run tests for a particular target suitable for testing, run a test task `Test`. -1. Prepare your environment for multiplatform - development. [Check the list of necessary tools and update them to the latest versions if necessary](multiplatform-mobile-setup.md). -2. In Android Studio, select **File** | **New** | **New Project**. -3. Select **Kotlin Multiplatform App** in the list of project templates, and click **Next**. +## Test shared code - ![Mobile Multiplatform project template](multiplatform-mobile-project-wizard-1.png){width=700} +For testing shared code, you can use [actual declarations](multiplatform-expect-actual.md) in your tests. -4. Name your application and click **Next**. - - ![Mobile Multiplatform project - general settings](multiplatform-mobile-project-wizard-2.png){width=700} - -5. Leave the **Add sample tests for Shared Module** option unchecked. - - This option adds extra source sets and sample code to assist you with code testing. However, to understand how to - create and configure tests better, you'll add them manually in this tutorial. - - ![Mobile Multiplatform project. Additional settings](multiplatform-mobile-project-wizard-3.png){width=700} - -6. Keep all other options default values. Click **Finish**. - -### Write code - -1. To view the complete structure of your multiplatform project, switch the view from **Android** to **Project**: - - ![Select the Project view](select-project-view.png){width=200} - -2. In `shared/src/commonMain/kotlin`, create a new `common.example.search` directory. -3. In this directory, create a Kotlin file, `Grep.kt`, and add the following function: - - ```kotlin - fun grep(lines: List, pattern: String, action: (String) -> Unit) { - val regex = pattern.toRegex() - lines.filter(regex::containsMatchIn) - .forEach(action) - } - ``` - - This function is designed to resemble the [UNIX grep command](https://en.wikipedia.org/wiki/Grep). Here, the function - takes lines of text, a pattern used as a regular expression, and a function that is invoked every time a line matches - the pattern. - -### Add tests - -Let's test the common code. An essential part will be a source set for common tests, -which has the [`kotlin.test`](https://kotlinlang.org/api/latest/kotlin.test/) API library as a dependency. - -1. In the `shared` directory, open the `build.gradle.kts` file. You'll see that this template project already has - a source set for testing the common code. Within its declaration, there is a dependency on the `kotlin.test` library: - - ```kotlin - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - } - } - ``` - - Each multiplatform project has a `commonTest` source set by default. This is where the common tests are stored. - All you need to do is to create a corresponding folder in your project, which must have the same name. - -2. Creating a new directory in `shared/src`. Choose `commonTest` containing the `kotlin` folder - from the list of standard options provided by the IDE: - - ![Creating common test directory](create-common-test-dir.png){width=300} - -3. In the `kotlin` folder, create a new `common.example.search` directory. -4. In this directory, create the `Grep.kt` file and update it with the following unit test: - - ```kotlin - import kotlin.test.Test - import kotlin.test.assertContains - import kotlin.test.assertEquals - - class GrepTest { - companion object { - val sampleData = listOf( - "123 abc", - "abc 123", - "123 ABC", - "ABC 123" - ) - } - - @Test - fun shouldFindMatches() { - val results = mutableListOf() - grep(sampleData, "[a-z]+") { - results.add(it) - } - - assertEquals(2, results.size) - for (result in results) { - assertContains(result, "abc") - } - } - } - ``` - -As you can see, imported annotations and assertions are neither platform nor framework-specific. -When you run this test later, a platform-specific framework will provide the test runner. - -#### Explore the `kotlin.test` API {initial-collapse-state="collapsed"} - -The [`kotlin.test`](https://kotlinlang.org/api/latest/kotlin.test/) library provides platform-agnostic -annotations and assertions for you to use in your tests. Annotations, such as `Test`, -map to those provided by the selected framework or their nearest equivalent. - -Assertions are executed through an implementation of the [`Asserter` interface](https://kotlinlang.org/api/latest/kotlin.test/kotlin.test/-asserter/). -This interface defines the different checks commonly performed in testing. The API has a default implementation, -but typically you will use a framework-specific implementation. - -For example, the JUnit 4, JUnit 5, and TestNG frameworks are all supported on JVM. On Android, a call to `assertEquals()` -might result in a call to `asserter.assertEquals()`, where the `asserter` object is an instance of `JUnit4Asserter`. -On iOS, the default implementation of the `Asserter` type is used in conjunction with the Kotlin/Native test runner. - -### Run tests - -You can execute the test by running: - -* The `shouldFindMatches()` test function using the **Run** icon in the gutter -* The test file using its context menu -* The `GrepTest` test class using the **Run** icon in the gutter - -There's also a handy ⌃Ctrl ⇧Shift R/Ctrl+Shift+F10 shortcut. -Regardless of the option you choose, you'll see a list of targets to run the test on: - -![Run test task](run-test-tasks.png){width=300} - -For the `android` option, tests are run using JUnit 4. For `iosSimulatorArm64`, the Kotlin compiler detects testing -annotations and creates a _test binary_ that is executed by Kotlin/Native's own test runner. - -Here is an example of the output generated by a successful test run: - -![Test output](run-test-results.png){width=700} - -## Work with more complex projects - -### Write tests for common code - -You've already created a test for common code with the `grep()` function. Now let's consider a more advanced common code -test with the `CurrentRuntime` class. This class contains details of the platform on which the code is executed. -For example, it might have the values "OpenJDK" and "17.0" for Android unit tests that run on a local JVM. - -An instance of `CurrentRuntime` should be created with the name and version of the platform as strings, where the -version is optional. When the version is present, you only need the number at the start of the string, if available. - -1. In the `commonMain/kotlin` folder, create a new `org.kmp.testing` directory. -2. In this directory, create the `CurrentRuntime.kt` file and update it with the following implementation: - - ```kotlin - class CurrentRuntime(val name: String, rawVersion: String?) { - companion object { - val versionRegex = Regex("^[0-9]+(\\.[0-9]+)?") - } - - val version = parseVersion(rawVersion) - - override fun toString() = "$name version $version" - - private fun parseVersion(rawVersion: String?): String { - val result = rawVersion?.let { versionRegex.find(it) } - return result?.value ?: "unknown" - } - } - ``` - -3. In the `commonTest` folder, create a new `org.kmp.testing` directory. -4. In this directory, create the `CurrentRuntimeTest.kt` and update it with following platform and framework-agnostic test: - - ```kotlin - import kotlin.test.Test - import kotlin.test.assertEquals - - class CurrentRuntimeTest { - @Test - fun shouldDisplayDetails() { - val runtime = CurrentRuntime("MyRuntime", "1.1") - assertEquals("MyRuntime version 1.1", runtime.toString()) - } - - @Test - fun shouldHandleNullVersion() { - val runtime = CurrentRuntime("MyRuntime", null) - assertEquals("MyRuntime version unknown", runtime.toString()) - } - - @Test - fun shouldParseNumberFromVersionString() { - val runtime = CurrentRuntime("MyRuntime", "1.2 Alpha Experimental") - assertEquals("MyRuntime version 1.2", runtime.toString()) - } - - @Test - fun shouldHandleMissingVersion() { - val runtime = CurrentRuntime("MyRuntime", "Alpha Experimental") - assertEquals("MyRuntime version unknown", runtime.toString()) - } - } - ``` - -You can run this test using any of the ways [available in the IDE](#run-tests). - -### Add platform-specific tests - -> Here, the [mechanism of expected and actual declarations](multiplatform-connect-to-apis.md) -> is used for brevity and simplicity. In more complex code, a better approach is to use interfaces and factory functions. -> -{type="note"} - -Now you have experience writing tests for common code. Let's explore writing platform-specific tests for Android and iOS. - -To create an instance of `CurrentRuntime`, declare a function in the common `CurrentRuntime.kt` file as follows: +For example, to test the shared code in `commonMain`: ```kotlin -expect fun determineCurrentRuntime(): CurrentRuntime -``` - -The function should have separate implementations for each supported platform. Otherwise, the build will fail. -As well as implementing this function on each platform, you should provide tests. Let's create them for Android and iOS. - -#### For Android - -1. In the `androidMain/kotlin` folder, create a new `org.kmp.testing` directory. -2. In this directory, create the `AndroidRuntime.kt` file and update it with the actual implementation of the expected - `determineCurrentRuntime()` function: - - ```kotlin - actual fun determineCurrentRuntime(): CurrentRuntime { - val name = System.getProperty("java.vm.name") ?: "Android" - - val version = System.getProperty("java.version") - - return CurrentRuntime(name, version) - } - ``` - -3. Use the IDE's suggestions to create the `androidUnitTest/kotlin` directory: - - ![Creating Android test directory](create-android-test-dir.png){width=300} - -4. In the `kotlin` folder, create a new `org.kmp.testing` directory. -5. In this directory, create the `AndroidRuntimeTest.kt` file and update it with the following Android test: - - ```kotlin - import kotlin.test.Test - import kotlin.test.assertContains - import kotlin.test.assertEquals - - class AndroidRuntimeTest { - @Test - fun shouldDetectAndroid() { - val runtime = determineCurrentRuntime() - assertContains(runtime.name, "OpenJDK") - assertEquals(runtime.version, "17.0") - } - } - ``` +expect object Platform { + val name: String +} -It may seem strange that an Android-specific test is run on a local JVM. This is because these tests run as local unit -tests on the current machine. As described in the [Android Studio documentation](https://developer.android.com/studio/test/test-in-android-studio), -these tests are different from instrumented tests, which run on a device or an emulator. +fun hello(): String = "Hello from ${Platform.name}" -The **Kotlin Multiplatform App** template project is not configured to support these tests by default. However, it's -possible to add additional dependencies and folders. To learn about adding support for instrumented tests, see this [Touchlab guide](https://touchlab.co/understanding-and-configuring-your-kmm-test-suite/) +class Proxy { + fun proxyHello() = hello() +} +``` -#### For iOS +You can use the following test in `commonTest`: -1. In the `iosMain/kotlin` folder, create a new `org.kmp.testing` directory. -2. In this directory, create the `IOSRuntime.kt` file and update it with the actual implementation of the expected - `determineCurrentRuntime()` function: +```kotlin +import kotlin.test.Test +import kotlin.test.assertTrue - ```kotlin - import kotlin.native.Platform - - actual fun determineCurrentRuntime(): CurrentRuntime { - val name = Platform.osFamily.name.lowercase() - return CurrentRuntime(name, null) +class SampleTests { + @Test + fun testProxy() { + assertTrue(Proxy().proxyHello().isNotEmpty()) } - ``` - -3. Use the IDE's suggestions to create the `iosTest/kotlin` directory: +} +``` - ![Creating iOS test directory](create-ios-test-dir.png){width=300} +And the following test in `iosTest`: -4. In the `kotlin` folder, create a new `org.kmp.testing` directory. -5. In this directory, create the `IOSRuntimeTest.kt` file and update it with the following iOS test: +```kotlin +import kotlin.test.Test +import kotlin.test.assertTrue - ```kotlin - import kotlin.test.Test - import kotlin.test.assertEquals - - class IOSRuntimeTest { - @Test - fun shouldDetectOS() { - val runtime = determineCurrentRuntime() - assertEquals(runtime.name, "ios") - assertEquals(runtime.version, "unknown") - } +class SampleTestsIOS { + @Test + fun testHello() { + assertTrue("iOS" in hello()) } - ``` - -### Run multiple tests and analyze reports - -At this stage, you have the code for common, Android, and iOS implementations, as well as their tests. You should have a -similar directory structure to this in your project: - -![Whole project structure](code-and-test-structure.png){width=300} - -You can run individual tests from the context menu or use the shortcut. One more option is to use Gradle tasks. For -example, if you run the `allTests` Gradle task, every test in your project will be run with the corresponding test runner. - -![Gradle test tasks](gradle-alltests.png){width=700} - -When you run tests, in addition to the output in your IDE, HTML reports are generated. You can find them in -the `shared/build/tests` directory: - -![HTML reports for multiplatform tests](shared-tests-folder-reports.png){width=300} - -Run the `allTests` task and examine its report. You'll see that: - -* Android and iOS tests depend on common tests. -* Common tests always run before platform-specific ones. - -![HTML report for multiplatform tests](multiplatform-test-report.png){width=700} - -## Rules for using tests in multiplatform projects - -You've now created, configured, and executed tests in Kotlin Multiplatform applications. -When working with tests in your future projects, remember: - -* When writing tests for common code, use only multiplatform libraries, like [kotlin.test](https://kotlinlang.org/api/latest/kotlin.test/). Add dependencies to - the `commonTest` source set. -* The `Asserter` type from the `kotlin.test` API should only be used indirectly. - Although the `Asserter` instance is visible, you don't need to use it in your tests. -* Always stay within the testing library API. Fortunately, - the compiler and the IDE prevent you from using framework-specific functionality. -* Although it doesn't matter which framework you use for running tests in `commonTest`, it's a good idea to run your - tests with each framework you intend to use to check that your development environment is set up correctly. -* When writing tests for platform-specific code, you can use the functionality of the corresponding framework, for example, - annotations and extensions. -* You can run tests both from the IDE and using Gradle tasks. -* When you run tests, HTML test reports are generated automatically. - -## What's next? +} +``` -* Explore the layout of multiplatform projects in [Understand Multiplatform project structure](multiplatform-discover-project.md). -* Check out [Kotest](https://kotest.io/), another multiplatform testing framework that the Kotlin ecosystem provides. - Kotest allows writing tests in a range of styles and supports complementary approaches to regular testing. - These include [data-driven](https://kotest.io/docs/framework/datatesting/data-driven-testing.html) - and [property-based](https://kotest.io/docs/proptest/property-based-testing.html) testing. \ No newline at end of file +You can also learn how to create and run multiplatform tests in the [Create and publish a multiplatform library – tutorial](multiplatform-library.md#test-your-library). \ No newline at end of file diff --git a/docs/topics/multiplatform/multiplatform-share-on-platforms.md b/docs/topics/multiplatform/multiplatform-share-on-platforms.md index b17c62c05e8..8c15238dcc3 100644 --- a/docs/topics/multiplatform/multiplatform-share-on-platforms.md +++ b/docs/topics/multiplatform/multiplatform-share-on-platforms.md @@ -8,7 +8,7 @@ business logic that applies to all platforms. reuse code in similar platforms with a help of the hierarchical structure. If you need to access platform-specific APIs from the shared code, use the Kotlin mechanism of [expected and actual -declarations](multiplatform-connect-to-apis.md). +declarations](multiplatform-expect-actual.md). ## Share code on all platforms @@ -22,7 +22,7 @@ Some dependencies for source sets are set by default. You don't need to specify * Between the `main` and `test` source sets of a particular target, such as `androidMain` and `androidUnitTest`. If you need to access platform-specific APIs from the shared code, use the Kotlin mechanism of [expected and actual -declarations](multiplatform-connect-to-apis.md). +declarations](multiplatform-expect-actual.md). ## Share code on similar platforms @@ -76,6 +76,6 @@ kotlin.mpp.enableCInteropCommonization=true ## What's next? -* Check out examples of code sharing using the Kotlin mechanism of [expect and actual declarations](multiplatform-connect-to-apis.md) +* Check out examples of code sharing using the Kotlin mechanism of [expect and actual declarations](multiplatform-expect-actual.md) * Learn more about [hierarchical project structure](multiplatform-hierarchy.md) * See our recommendations on [naming source files in multiplatform projects](coding-conventions.md#source-file-names) \ No newline at end of file diff --git a/docs/topics/multiplatform/multiplatform.md b/docs/topics/multiplatform/multiplatform.md index 93866397524..f6dbe5b9671 100644 --- a/docs/topics/multiplatform/multiplatform.md +++ b/docs/topics/multiplatform/multiplatform.md @@ -65,7 +65,7 @@ Kotlin provides the following code sharing mechanisms: ![Code shared across different platforms](kotlin-multiplatform-hierarchical-structure.svg){width=700} * If you need to access platform-specific APIs from the shared code, use the Kotlin mechanism of [expected and actual -declarations](multiplatform-connect-to-apis.md). +declarations](multiplatform-expect-actual.md). ## Get started diff --git a/docs/topics/native-and-cross-platform.md b/docs/topics/native-and-cross-platform.md index a85576fc117..3339e258769 100644 --- a/docs/topics/native-and-cross-platform.md +++ b/docs/topics/native-and-cross-platform.md @@ -53,7 +53,7 @@ There's a common misconception that native apps are much more secure and reliabl #### 3. Cross-platform apps don't have access to all native functions of mobile devices. -It is true that not all cross-platform frameworks allow you to build apps with full access to the device's features. Nevertheless, some modern multiplatform frameworks can help you overcome this challenge. For example, Kotlin Multiplatform Mobile gives easy access to Android and iOS SDKs. It provides a [Kotlin mechanism of expected and actual declarations](multiplatform-connect-to-apis.md) to help you access the device's capabilities and features. +It is true that not all cross-platform frameworks allow you to build apps with full access to the device's features. Nevertheless, some modern multiplatform frameworks can help you overcome this challenge. For example, Kotlin Multiplatform Mobile gives easy access to Android and iOS SDKs. It provides a [Kotlin mechanism of expected and actual declarations](multiplatform-expect-actual.md) to help you access the device's capabilities and features. #### 4. It can often be difficult to manage cross-platform projects. diff --git a/docs/topics/sealed-classes.md b/docs/topics/sealed-classes.md index 2c0f16a3bde..925d191a155 100644 --- a/docs/topics/sealed-classes.md +++ b/docs/topics/sealed-classes.md @@ -69,7 +69,7 @@ open class CustomError(): Error // can be extended wherever it's visible ### Inheritance in multiplatform projects There is one more inheritance restriction in [multiplatform projects](multiplatform-get-started.md): direct subclasses of sealed classes must -reside in the same source set. It applies to sealed classes without the [`expect` and `actual` modifiers](multiplatform-connect-to-apis.md). +reside in the same source set. It applies to sealed classes without the [expected and actual modifiers](multiplatform-expect-actual.md). If a sealed class is declared as `expect` in a common source set and have `actual` implementations in platform source sets, both `expect` and `actual` versions can have subclasses in their source sets. Moreover, if you use a [hierarchical structure](multiplatform-share-on-platforms.md#share-code-on-similar-platforms), @@ -92,7 +92,7 @@ fun log(e: Error) = when(e) { } ``` -> `when` expressions on [`expect`](multiplatform-connect-to-apis.md) sealed classes in the common code of multiplatform projects still +> `when` expressions on [`expect`](multiplatform-expect-actual.md) sealed classes in the common code of multiplatform projects still > require an `else` branch. This happens because subclasses of `actual` platform implementations aren't known in the > common code. > diff --git a/docs/topics/whatsnew14.md b/docs/topics/whatsnew14.md index 88a5a66faff..d361681272d 100644 --- a/docs/topics/whatsnew14.md +++ b/docs/topics/whatsnew14.md @@ -823,7 +823,7 @@ With the new hierarchical project structure support, you can share code among [s Previously, any code added to a multiplatform project could be placed either in a platform-specific source set, which is limited to one target and can't be reused by any other platform, or in a common source set, like `commonMain` or `commonTest`, which is shared across all the platforms in the project. In the common source set, you could only call a platform-specific -API by using an [`expect` declaration that needs platform-specific `actual` implementations](multiplatform-connect-to-apis.md). +API by using an [`expect` declaration that needs platform-specific `actual` implementations](multiplatform-expect-actual.md). This made it easy to [share code on all platforms](multiplatform-share-on-platforms.md#share-code-on-all-platforms), but it was not so easy to [share between only some of the targets](multiplatform-share-on-platforms.md#share-code-on-similar-platforms), diff --git a/redirects/pages.yml b/redirects/pages.yml index 986462286e3..59617372f8d 100644 --- a/redirects/pages.yml +++ b/redirects/pages.yml @@ -615,9 +615,6 @@ - from: /docs/reference/collection-ordering.html to: /docs/collection-ordering.html -- from: /docs/reference/platform-specific-declarations.html - to: /docs/multiplatform-connect-to-apis.html - - from: /docs/reference/operator-overloading.html to: /docs/operator-overloading.html @@ -630,9 +627,6 @@ - from: /docs/reference/scope-functions.html to: /docs/scope-functions.html -- from: /docs/reference/mpp-connect-to-apis.html - to: /docs/multiplatform-connect-to-apis.html - - from: /docs/reference/type-aliases.html to: /docs/type-aliases.html @@ -692,3 +686,12 @@ - /docs/multiplatform-mobile-concurrency-and-coroutines.html - /docs/kmm-concurrency-and-coroutines.html to: /docs/native-memory-manager.html + +- from: + - /docs/platform-specific-declarations.html + - /docs/mpp-connect-to-apis.html + - /docs/kmm-connect-to-platform-specific-apis.html + - /docs/multiplatform-mobile-connect-to-platform-specific-apis.html + - /docs/reference/platform-specific-declarations.html + - /docs/reference/mpp-connect-to-apis.html + to: https://www.jetbrains.com/help/kotlin-multiplatform-dev/multiplatform-connect-to-apis.html