我已经编写了示例CRUD方法,我已经为服务组件编写了JUnit测试用例,但得到的结果是“地址id没有找到…”当我做测试的时候。
@test public void updateAddressTest()引发ResourceNotFoundException{
Optional<Person> p = Optional.ofNullable(new Person( "Pranya", "Pune"));
when(personRepository.existsById(1L)).thenReturn(true);
Optional<Address> address = Optional.ofNullable(new Address( "zzz", "hyd","tel","1234"));
when(repository.findById(1L)).thenReturn(address);
Address addr1 = new Address( "zzz", "hyd","tel","1234");
when(repository.save(addr1)).thenReturn(addr1);
Address add= service.updateAddress(new Long(1L), new Long(1L),addr1);
assertEquals(addr1,add );
}
@Service
public class AddressService {
@Autowired
private AddressRepository repository;
@Autowired
private PersonRepository personRepository;
public Address updateAddress(Long personId,
Long addressId,Address addrRequest) throws ResourceNotFoundException {
if (!personRepository.existsById(personId)) {
throw new ResourceNotFoundException("personId not found");
}
return repository.findById(addressId).map(address -> {
address.setCity(addrRequest.getCity());
address.setState(addrRequest.getState());
address.setStreet(addrRequest.getStreet());
address.setPostalCode(addrRequest.getPostalCode());
Person p = new Person();
p.setId(personId);
address.setPerson(p);
return repository.save(address);
}).orElseThrow(() -> new ResourceNotFoundException("address id not found.."));
}
}
很可能repository.save(address)
返回null
。您正在嘲笑该方法,但仅针对参数equaladdr1
。在AddressService中创建了一个不同的地址实例。我猜Address类没有实现equals
方法(或者在实现中包含person字段),所以when(repository.save(addr1)).thenreturn(addr1)
与调用不匹配,返回null
。
要解决此问题,请尝试使用mockito.doanswer
而不是mockito.when
:
Mockito.doAnswer(invocation -> invocation.getArguments()[0]).when(repo).save(Mockito.any(Address.class));
本节介绍与JUnit Framework相关的各种模拟测试。 您可以在本地计算机上下载这些示例模拟测试,并在方便时离线解决。 每个模拟测试都提供一个模拟测试密钥,让您自己验证最终得分和评分。 JUnit Mock Test I 问题1 - 以下哪项描述正确测试? A - 测试是检查应用程序功能的过程,是否按照要求运行。 B - 测试是单个实体(类或方法)的测试。 C - 以上两者。 D - 以上都
从很久以前的某个版本开始(大约是1.b.35版),Nutz 就偷偷的加入了 maven 的 pom.xml 文件, 极好的解决了测试时需要依赖其他 jar 包的问题,接下来就让我们使用 Maven 来进行 JUnit 测试吧。 Nutz 在 Github 的 地址为 https://github.com/nutzam/nutz(Git@OSC镜像 https://git.oschina.net/n
尝试为使用的演示者运行JUnit测试时,遇到RuntimeException。 由于它们是纯JUnit测试,而不是Android instrumentation测试,因此它们没有访问Android依赖项的权限,导致我在执行测试时遇到以下错误:
问题内容: 我有一个Java命令行程序。我想创建JUnit测试用例以进行模拟。因为当我的程序运行时,它将进入while循环并等待用户输入。如何在JUnit中模拟呢? 问题答案: 从技术上讲,可以进行切换,但是总的来说,不直接在代码中调用它,而是添加一层间接层,这样输入源就可以从应用程序的某个位置进行控制,这样会更健壮。确切地讲,这是实现的详细信息-依赖项注入的建议很好,但是你不一定需要引入第三方框
现在您已经了解了TestNG及其各种测试,您现在必须担心如何重构现有的JUnit代码。 没有必要担心,因为TestNG提供了一种按照自己的节奏从JUnit转换到TestNG的方法。 您可以使用TestNG执行现有的JUnit测试用例。 TestNG可以自动识别并运行JUnit测试,因此您可以将TestNG用作所有现有测试的运行器,并使用TestNG编写新测试。 您所要做的就是将JUnit库放在Te
问题内容: 我在NetBeans 8.2中的一个新的干净Maven项目中创建了此测试: 如果我运行测试,日志显示 我的pom.xml包含以下依赖项: 是什么导致JUnit 5忽略测试方法? 更新:我添加了surefire插件,这是完整的pom.xml: 输出更改为: 并且surefire-reports文件夹包含两个“ .dump”文件。第一个内容: 问题答案: 确保将您的配置正确地设置为: 而且