当前位置: 首页 > 知识库问答 >
问题:

如何在单元测试中强制spring boot设置autowired字段

蒋啸
2023-03-14

我正在开发一个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));
    }
}

共有1个答案

凌意
2023-03-14

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)。但是,这仅用于运行整个测试类-如果