首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JMockit -意外调用

JMockit -意外调用
EN

Stack Overflow用户
提问于 2019-07-27 19:24:12
回答 1查看 1.5K关注 0票数 1

我有一个使用JMockit进行单元测试的简单实现。具体实现如下

Team

代码语言:javascript
复制
public class Team {
    private TeamLeader teamLeader;
    public Team(TeamLeader teamleader) {
        this.teamLeader = teamleader;
    }

    public boolean hasDiscussion() {
        System.out.println("Discussion is hold by " + teamLeader.getName());
        Discussion discussion = new Discussion();
        return discussion.start();
    }
}

TeamLeader

代码语言:javascript
复制
public class TeamLeader {

    private String name;

    public TeamLeader(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

Discussion

代码语言:javascript
复制
public class Discussion {

    public boolean start() {
        return false;
    }
}

然后,我有一个单元测试来测试函数hasDiscussion,如下所示

代码语言:javascript
复制
@RunWith(JMockit.class)
public class TeamTest {

    private Team team;

    @Test
    public void hasDiscussion(@Mocked TeamLeader teamLeader, @Mocked Discussion discussion) {

        new Expectations() {{
            teamLeader.getName(); result = "teamleader";
            discussion.start(); result = true;
        }};

        team = new Team(teamLeader);
        boolean actualResult = team.hasDiscussion();

        new Verifications() {{
            assertThat(actualResult, is(true));
        }};

    }
}

在执行测试时,我得到了以下错误

代码语言:javascript
复制
Unexpected invocation of:
entity.Discussion#Discussion()
   on instance: entity.Discussion@7b70deb2
when was expecting an invocation of:
entity.Discussion#start()
   on mock instance: entity.Discussion@6f93ad02
mockit.internal.UnexpectedInvocation: Unexpected invocation of:
entity.Discussion#Discussion()
   on instance: entity.Discussion@7b70deb2
when was expecting an invocation of:

对这类问题有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-27 19:31:00

这是因为您的hasDiscussion方法正在创建Discussion类的一个新实例,而在本例中,您不能模拟它。为了解决这个问题,您可以接收Discuss类作为方法的参数,并发送模拟,我们在Team类构造函数中注入了讨论类。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57231638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档