Используйте OpenCV в многоплатформенном модульном тесте KotlinAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Используйте OpenCV в многоплатформенном модульном тесте Kotlin

Сообщение Anonymous »

Я создаю библиотеку на мультиплатформенной платформе Kotlin.
Я хочу создать несколько функций с использованием Opencv. Прежде чем реализовывать все, я хочу запустить модульный тест, чтобы убедиться, что мои зависимости работают:
Это мой общий/src/androidUnitTest/kotlin/com/ltu/ibsalib/Test.android.kt файл:

Код: Выделить всё

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)
}
}
Это очень просто, поскольку я хочу проверить, есть ли у меня правильные зависимости.
С другой стороны, это мой котлин блок в моем файле Shared/build.gradle.kts:

Код: Выделить всё

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")
}
}
}
}
Когда я запускаю тест, тот, кто читает версию, завершает работу нормально, однако я получаю эту ошибку от testImageQuality :

Код: Выделить всё

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.
Вопрос:

[*]Я что-то упустил в тесте?
[*] Должен ли я (как-то) имитировать метод d в android.util.Log?
[*]Есть ли что-то еще, чтобы использовать OpenCV в мультиплатформе Kotlin?
< /ул>

Подробнее здесь: https://stackoverflow.com/questions/793 ... -unit-test
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»