我正在开发一个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来运行我的测试用例。
问题内容: 我有一些Junit单元测试,需要大量的堆空间才能运行-即1G。(他们测试了一个Webstart应用程序的内存密集型功能,该功能仅在具有足够的堆空间的情况下运行,并且将在Win 7 64位计算机上内部运行-因此,重新设计测试不是一个实际的建议。) 我正在Intellij IDEA中进行开发,因此我知道可以为测试类设置JVM参数(例如-Xmx1024M)。但是,这仅用于运行整个测试类-如果