Verwenden Sie OpenCV im Kotlin Multiplattform-EinheitentestAndroid

Forum für diejenigen, die für Android programmieren
Guest
 Verwenden Sie OpenCV im Kotlin Multiplattform-Einheitentest

Post by Guest »

Ich baue eine Bibliothek auf der Kotlin Multi-Plattform auf.
Ich möchte mehrere Funktionen mit Opencv erstellen. Bevor ich alles implementiert habe, möchte ich einen Unit-Test durchführen, um sicherzustellen, dass meine Abhängigkeiten funktionieren:
Dies ist mein shared/src/androidUnitTest/kotlin/com/ltu/ibsalib/Test.android.kt Datei:

Code: Select all

package com.ltu.ibsalib

import org.junit.Assert.assertTrue
import org.junit.Test
import org.junit.Assert.assertNotNull

import org.opencv.android.OpenCVLoader;
import org.opencv.core.Core
import org.opencv.imgcodecs.Imgcodecs
import org.opencv.core.Mat

class AndroidGreetingTest {
@Test
fun testExample() {
assertTrue("Check Android is mentioned", Greeting().greet().contains("Android"))
assertTrue(true)
}
}

class OpenCVTest {
@Test
fun testOpenCVVersion() {
val ocv_version = Core.VERSION
println("[IBSA] OpenCV Version: $ocv_version")
assertNotNull(ocv_version)
assertTrue(ocv_version.contains("4.10"))

}
}

class ImageQualityTest {
@Test
fun testImageQuality() {
if (OpenCVLoader.initLocal())
{
println("[IBSA] OpenCV Loaded")
}
else
{
println("[IBSA] OpenCV Not Loaded")
}
val image: Mat = Mat()
assertNotNull("[LTU] Error: ", image)
}
}
Es ist sehr einfach, da ich testen möchte, ob ich die richtigen Abhängigkeiten habe.
Auf der anderen Seite ist dies mein Kotlin block in meiner shared/build.gradle.kts-Datei:

Code: Select all

kotlin {
androidTarget {
compilations.all {
kotlinOptions {
jvmTarget = "1.8"
}
}
publishLibraryVariants("release", "debug")
}

listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64()
).forEach {
it.binaries.framework {
baseName = "shared"
isStatic = true
}
}

sourceSets {
commonMain.dependencies {
//put your multiplatform dependencies here
}
commonTest.dependencies {
implementation(libs.kotlin.test)
}
val androidMain by getting {
dependencies {
implementation("org.opencv:opencv:4.10.0")
}
}
val androidUnitTest by getting {
dependencies {
implementation("org.opencv:opencv:4.10.0")
}
}
}
}
Wenn ich den Test ausführe, wird der Test, der die Version liest, einwandfrei abgeschlossen, ich erhalte jedoch diese Fehlermeldung von testImageQuality:

Code: Select all

ImageQualityTest > testImageQuality FAILED
java.lang.RuntimeException: Method d in android.util.Log not mocked. See https://developer.android.com/r/studio-ui/build/not-mocked for details.
at android.util.Log.d(Log.java)
at org.opencv.android.StaticHelper.initOpenCV(StaticHelper.java:18)
at org.opencv.android.OpenCVLoader.initLocal(OpenCVLoader.java:31)
at com.ltu.ibsalib.ImageQualityTest.testImageQuality(Test.android.kt:34)

OpenCVTest > testOpenCVVersion STANDARD_OUT
[IBSA] OpenCV Version: 4.10.0

4 tests completed, 1 failed
Finished generating test XML results (0.005 secs) into: /home/idarevalog/GIT/ltu-tech/private/products/armaria/ibsalib/shared/build/test-results/testReleaseUnitTest
Generating HTML test report...
Finished generating test html results (0.015 secs) into: /home/idarevalog/GIT/ltu-tech/private/products/armaria/ibsalib/shared/build/reports/tests/testReleaseUnitTest

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':shared:testReleaseUnitTest'.
> There were failing tests.
Frage:

[*]Habe ich beim Test etwas übersehen?
[*] Sollte ich (irgendwie) die Methode d in android.util.Log nachahmen?
[*]Gibt es noch etwas zu tun, um OpenCV in Kotlin Multiplatform zu verwenden?
< /ul>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post