使用 mockito 注入带有真实参数的 bean

我正在尝试用 mockito 编写一个单元测试用例,我想注入一个带有真实参数而不是模拟参数的 bean。


该 bean 具有一些从 .properties 文件中读取的字符串值。


@Component

public class SomeParameters {


    @Value("${use.queue}")

    private String useQueue;


 }


@RunWith(MockitoJUnitRunner.class)

public class ServiceTest {


    @Mock

    private A a;


    @Autowired

    private SomeParameters someParameters;


    @Before

    public void init() {

        MockitoAnnotations.initMocks(this);


    }


    @Test

    public void testMethod() {

        if(someParameters.getUseQueue==true){

            //do something

        }else{

            /bla bla

        }

    }

我的主要目标是运行具有真实场景的测试用例。我不想使用模拟值。


我能够以这种方式注入带有真实参数的 bean。但这是单元测试用例,而不是集成测试。所以我不应该给 applicationContext。你能指导我如何处理这种情况吗?


@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = {"classpath:applicationContextTest.xml"})

public class ServiceTest {


吃鸡游戏
浏览 686回答 2
2回答

墨色风雨

如果你想使用spring-context,那么你应该为你的测试创建一个配置(通过 xml 或 java config)并只声明你需要的 bean。例如对于设置属性只需声明,@TestPropertiesSource("use.queue=someValue")否则您需要从测试资源中读取值。

慕田峪9158850

如果要使用真实属性,请使用 Properties 对象加载属性文件并通过从 Properties 对象获取值来模拟该值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java