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

如何在单元测试中强制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来运行我的测试用例。

  • 问题内容: 是否有任何简单的机制可以覆盖Django单元测试的设置?我在一个模型上有一个经理,该经理返回特定数量的最新对象。它返回的对象数由NUM_LATEST设置定义。 如果有人更改设置,这可能会使我的测试失败。如何覆盖设置并随后恢复设置?如果不可能,是否可以通过某种方式猴子修补方法或模拟设置? 编辑:这是我的经理代码: 管理器用于切片查询集。该只是用来提供一个默认的应该设置不存在。 问题答案: