当前位置: 首页 > 知识库问答 >
问题:

Java单元测试中的模拟Kotlin类

阎涵忍
2023-03-14

我用Mockito进行了Java测试:

public class PersistentNodeDeserializerTests {

    @Test
    public void userInfoPersistentNodeDeserializer() {
        PersistentNode node = mock(PersistentNode.class);
        when(node.stringChild("username")).thenReturn("cliff12");
        //more stuff
    }

}
open class PersistentNode(private val path: PersistentNodePath, val content: Any) {

    val stringPath: String
        get() = path.get()

    val key: String
        get() {
            val parts = stringPath.split("/");
            return parts[parts.size - 1];
        }

    val mapContent: Map<String, Any>
        get() {
            return content as HashMap<String, Any>
        }

    fun stringChild(child: String): String {
        return mapContent.get(child) as String
    }

}

Kotlin.TypeCastException:null不能强制转换为非null类型java.util.HashMap

如何正确模拟属性StringChild

共有1个答案

王景山
2023-03-14

这个库可以解决您的问题https://github.com/nhaarman/mockito-kotlin

编辑:对不起,我没有意识到您使用的是Java测试。如果这是一种选择,试着也用kotlin编写测试

 类似资料:
  • 我的实现出了什么问题?谢谢

  • 我面临一个问题,而嘲笑jUnit测试的东西。 情况如下: 类A实现了来自第三方jar的接口,并且需要实现method1。除了method1之外,A还包含method2,它是从method1调用的。method2本身调用一些外部服务。 我想单元测试方法1。 方法1接受输入,比如X。X有一个包裹在里面的输入变量,比如var1。var1由方法1中的逻辑使用,方法1在X中设置另一个变量,比如var2。 所

  • 我有一个示例方法(我需要编写测试用例)如下所示, 我想模拟getConfig方法并返回一个特定的字符串值。getConfig是Kotlin对象中方法,如下所示, 下面是我尝试的测试 我没有得到任何错误,但是getConfig方法没有被嘲笑。执行实际的实现。我也试过使用Powermockito。请帮帮我

  • 我在尝试包装我的代码以用于单元测试时遇到了一些问题。问题是。我有接口IHttpHandler: 现在很明显,我将在Connection类中有一些方法,这些方法将从my后端检索数据(JSON)。但是,我想为这个类编写单元测试,显然我不想编写针对真实后端的测试,而是一个被嘲弄的测试。我曾尝试谷歌一个很好的答案,但没有很大的成功。我以前可以并且曾经使用过Moq来模拟,但是从来没有在像HttpClient

  • 我有一个Quarkus项目,我将大部分业务逻辑放在服务中,也就是使用@ApplicationScoped注释的可注入bean中,所有CRUD操作都在其中进行。在JAX-RS资源文件本身中,大部分逻辑只是验证,通常使用整个验证bean。这意味着我们需要在测试资源时模拟注入的服务,以防止单元测试成为本质上的集成测试。我们这样做有这样一个结构(示例项目); 文件模拟欢迎服务。java又是这样的: 我们的

  • 问题内容: 我正在为启动a 并使用返回的诺言执行一些逻辑的控制器编写单元测试。我可以测试触发$ modal的父控制器,但是我一生无法弄清楚如何模拟成功的诺言。 我尝试了多种方法,包括使用和强制履行承诺。但是,我得到的最接近的结果是与本 SO帖子中的最后一个答案相似的东西。 我已经在“旧的” 模式中看到了几次这样的问题。在“新” 模式下,我找不到太多的方法。 一些指针将不胜感激。 为了说明问题,我使