我正在开发一个spring boot应用程序。我试着开发了一些单元测试。单元测试必须在不启动容器中的应用程序的情况下运行,必须是如此快,可以在不需要大量时间的情况下运行。假设我有一个类名applicationservice
,如下所示:
@Service
public class ApplicationService {
@Autowired
private ApplicationRepository applicationRepository;
@Autowired
private final PasswordEncoder passwordEncoder;
///............
}
和以下测试:
@RunWith(SpringRunner.class)
@TestExecutionListeners(MockitoTestExecutionListener.class)
@ContextConfiguration
public class CreateApplicationTest {
@Autowired
@InjectMocks
ApplicationService applicationService;
@Mock
private ApplicationRepository applicationRepository;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
}
@Test
public void createApplication() {
CreateApplicationDTO dto = new CreateApplicationDTO("some info");
given(this.applicationService.createApplication(dto)).willReturn(null);
ApplicationResultDTO application = applicationService.createApplication(dto);
assertThat(application, is(someValue));
}
}
将PasswordEncoder
添加到带注释的@spy
@AutoWired
测试类中,以便在模拟的ApplicationService
中使用
@Spy
@Autowired
private PasswordEncoder passwordEncoder;
概要文件对于我所需要的似乎有点过分了,我不确定这是否可以通过主注释来实现,因为不同的单元测试可能有不同的模拟。
我正在尝试用liquibase为一些测试设置数据库模式和一些测试数据。每个测试都有一个单独的changelog,它为测试设置模式和一些特定的数据。 为了使我的测试工作,我需要在每次测试之前删除模式,并用新的测试数据填充它。然而,这似乎并不奏效,因为有些测试正在失败,因为旧的测试数据仍然可用。我觉得我的配置有些东西不对。如何在每次测试之前强制liquibase删除模式?
测试类: 在我的“取样玻璃”里,我自动连接了一个像这样的bean。 在我的“OtherSampleClass”中,我注释了一个方法,如下所示:
我有课。 有没有什么方法可以在单元测试中不使用Spring就将值插入到私有字段模式(用Resource注释)。我尝试使用通过反射设置私有变量,但这也没有帮助(可能是由于安全限制)。
spring管理bean 单元测试用例的上下文 我看到了许多问题,所有问题都给出了我已经在代码中包含的答案。谁能告诉我我错过了什么。我正在使用IntelliJ14来运行我的测试用例。
问题内容: 是否有任何简单的机制可以覆盖Django单元测试的设置?我在一个模型上有一个经理,该经理返回特定数量的最新对象。它返回的对象数由NUM_LATEST设置定义。 如果有人更改设置,这可能会使我的测试失败。如何覆盖设置并随后恢复设置?如果不可能,是否可以通过某种方式猴子修补方法或模拟设置? 编辑:这是我的经理代码: 管理器用于切片查询集。该只是用来提供一个默认的应该设置不存在。 问题答案: