由于无法创建位图,因此我无法测试此 getGeneratedBitmap 函数。
import android.graphics.Bitmap
class BitmapGenerator(query: String, private val width: Int, private val height: Int) {
private var sizeExpansion: SizeExpansion = SizeExpansion(query, width, height)
private var bitmap: Bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
private var expandedQuery: String
private var colors: IntArray
private var colorsLength: Int = 0
init {
colorsLength = sizeExpansion.getExpectedLength()
expandedQuery = sizeExpansion.getExpandedString()
colors = IntArray(colorsLength)
generateColorArray()
}
private fun generateColorArray(): IntArray {
for (x in 0 until colorsLength) {
colors[x] = ColorGenerator().generateColorAccToChar(expandedQuery[x])
}
return colors
}
fun getGeneratedBitmap(): Bitmap {
bitmap.setPixels(colors, 0, width, 0, 0, width, height)
return bitmap
}
}
我尝试测试的方式是:
import org.junit.Test
import org.junit.Assert.*
class BitmapGeneratorTest {
@Test
fun getGeneratedBitmap() {
assertNotEquals(BitmapGenerator("salih",25,25).getGeneratedBitmap(),null)
}
}
运行此测试时,它会在Bitmap.createBitmap
上引发异常
java.lang.IllegalStateException: Bitmap.createBitmap(widt… Bitmap.Config.ARGB_8888) must not be null
答案 0 :(得分:0)
它位于(/ src / test / java /)
这些是JVM单元测试,无需任何Android运行时即可运行。通常,JVM单元测试是以Android平台方法返回默认值的方式配置的。 null
是返回引用类型的方法(例如Bitmap.createBitmap()
)的默认值。尝试将此null分配给Kotlin nonnull类型会导致运行时异常。
两种常见方法:
以最小化Android SDK方法的表面积的方式重构代码,以便您可以使用简单的JVM单元测试来测试大多数代码。各种MV *架构模式可为您提供帮助。
使用Android依赖项在Android运行时上运行测试,即使其成为androidTest。
答案 1 :(得分:0)
123456790
不同于失败的断言。
这些行对我来说很奇怪,因为参数(可能是以前未分配的):
IllegalStateException
我可以看到private var sizeExpansion: SizeExpansion = SizeExpansion(query, width, height)
private var bitmap: Bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
...但还是对此感到疑惑。
首先定义private val width: Int, private val height: Int
并在var bitmap: Bitmap
上分配值(名称可能暗示)。
...,然后将测试移至init {}
。