我有以下服务方式:
public List<LabelDTO> findAllByLanguage(Language language) {
final Map<Pair<UUID, String>, List<TextLabelTranslatable>> valueList =
translatableRepository.findAllTranslatable();
// code omitted
return labelDTOList;
}
我正试图为此方法创建以下单元测试:
@Test
public void demo_test() {
List<LabelWithTranslatable> labelWithTranslatableList = new ArrayList<>();
LabelWithTranslatable labelWithTranslatable1 = mock(LabelWithTranslatable.class);
labelWithTranslatable1.getEntity().setId(123L);
labelWithTranslatableList.add(labelWithTranslatable1);
LabelWithTranslatable labelWithTranslatable2 = mock(LabelWithTranslatable.class);
labelWithTranslatable2.getEntity().setId(456L);
labelWithTranslatableList.add(labelWithTranslatable2);
// translatableRepository.findAllTranslatable() returns "List<LabelWithTranslatable>"
when(translatableRepository.findAllTranslatable())
.thenReturn(labelWithTranslatableList);
List<LabelDTO> result = labelService.findAllByLanguage(SupportedLanguage.en);
// assertions
}
我的问题是:
1.我们需要在单元测试中测试findall()
方法吗?如果是这样,我们是否应该为列表创建多条记录,然后将返回的结果与预期的筛选值进行比较?
public interface LabelWithTranslatable extends
GenericTranslatable<Label, LabelTranslatable> {
}
泛型可译:
public interface GenericTranslatable<E extends BaseEntity, T extends BaseTranslatableEntity> {
E getEntity();
T getTranslatable();
}
是的,您确实需要测试findallxxx
方法--由问题中的//code省略
注释表示的代码需要测试覆盖率。
正如您所建议的,您可以通过模拟底层存储库来实现这一点。
要模拟LabelwithTranslatable
实例,您需要执行以下操作:
LabelWithTranslatable labelWithTranslatable1 = mock(LabelWithTranslatable.class);
Label label1 = mock(Label.class);
when(label1.getId()).thenReturn(123L);
when(labelWithTranslatable1.getEntity()).thenReturn(label1);
labelWithTranslatableList.add(labelWithTranslatable1);
null
Android Studio 1.1 添加了单元测试支持,详细请看 Unit testing support。本章的其余部分描述的是 “instrumentation tests”。利用 Instrumentation 测试框架可以构建独立的测试 APK 并运行在真实设备(或模拟器)中进行测试。
英文原文:http://emberjs.com/guides/testing/unit/ 单元测试用于测试代码的一个小片段,确保其功能正常。与集成测试不同,单元测试被限定在一个范围内,并且不需要Ember应用运行。 全局 vs 模块 过去如果没有作为一个全局变量加载整个Ember应用,要对应用进行测试非常困难。通过使用模块(CommonJS,AMD等)来编写应用,可以只加载被测试的部分,而不用将其
我启动了一个项目,现在项目中有大约7个测试,使用执行整个测试套件已经花费了一分钟多的时间。 从附加输出(标志)中,我可以看到,对于每个测试类和方法,整个quarkus应用程序以及mongodb实例等依赖项都会重新启动。 这与quarkus文档在测试指南页面上的内容完全相反: 到目前为止,在我们的所有示例中,我们只为所有测试启动Quarkus一次。在运行第一个测试之前,Quarkus将启动,然后所有
问题内容: 我有以前具有大量方法的类,因此我将此方法的工作细分为“辅助”方法。 这些辅助方法声明为强制执行封装- 但是我想对大型公共方法进行单元测试。是否也可以对辅助方法进行单元测试,好象其中的一个失败,而调用它的公共方法也会失败,这样我们就可以确定为什么失败了? 另外,为了使用模拟对象测试这些对象,我需要将其可见性从私有更改为受保护,这是否可取? 问题答案: 一种方法是省略测试并将其放在同一程序
测试失败,因为为。为什么不以阻塞的方式在ViewModel中运行块? 我知道,如果将其转换为返回对象的方法,则可以通过调用获取对象,或者可以返回并调用。但是,我想通过将我的ViewModel方法保留为函数来实现这一点,有没有办法做到这一点呢?