gpt4 book ai didi

java - 在单元测试中是否有替代模拟对象的方法?

转载 作者:搜寻专家 更新时间:2023-11-01 01:24:16 24 4
gpt4 key购买 nike

它是一个 Java(使用 JUnit)企业 Web 应用程序,没有预先构建的模拟对象,并且估计需要大量时间来创建它们。是否有一种测试范式可以给我“一些”测试覆盖率,但不是全部覆盖率?

最佳答案

您是否尝试过动态模拟框架,例如 EasyMock ?它不需要您“创建”一个 Mock 对象,因为您必须编写整个类 - 您可以在测试本身中指定您想要的行为。

使用 UserService 查找有关用户的详细信息以便某人登录的类示例:

//Tests what happens when a username is found in the backend
public void testLoginSuccessful() {
UserService mockUserService = EasyMock.createMock(UserService.class);

EasyMock.expect(mockUserService.getUser("aUsername")).andReturn(new User(...));
EasyMock.replay(mockUserService);

classUnderTest.setUserService(mockUserService);

boolean isLoggedIn = classUnderTest.login("username");
assertTrue(isLoggedIn);
}

//Tests what happens when the user does not exist
public void testLoginFailure() {
UserService mockUserService = EasyMock.createMock(UserService.class);

EasyMock.expect(mockUserService.getUser("aUsername")).andThrow(new UserNotFoundException());
EasyMock.replay(mockUserService);

classUnderTest.setUserService(mockUserService);

boolean isLoggedIn = classUnderTest.login("username");
assertFalse(isLoggedIn);
}

关于java - 在单元测试中是否有替代模拟对象的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2029943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com