Java 如何使用JMockit模拟所有者配置

Java 如何使用JMockit模拟所有者配置,java,unit-testing,jmockit,owner,Java,Unit Testing,Jmockit,Owner,我正在尝试为我的一个应用程序编写一些单元测试,以验证我的被测类是否正在使用该应用程序的配置属性 我们使用的是属性解析和模拟框架 我要考的班级: public class TestMe { private final MyAppConfig config = ConfigFactory.create(MyAppConfig.class); public void doStuff() { String someValue = config.getSomeValue(

我正在尝试为我的一个应用程序编写一些单元测试,以验证我的被测类是否正在使用该应用程序的配置属性

我们使用的是属性解析和模拟框架

我要考的班级:

public class TestMe {
    private final MyAppConfig config = ConfigFactory.create(MyAppConfig.class);

    public void doStuff() {
        String someValue = config.getSomeValue();
        ...
    }
}
我的测试班:

public class TestMeTest {
    @Tested
    TestMe testMe;

    @Test
    public void doStuffShouldUseTheConfiguredSomeValue(@Mocked ConfigFactory configFactory, @Mocked MyAppConfig myAppConfig) {
        new Expectations() {{
            ConfigFactory.create(MyApp.class); result = myAppConfig;
            myAppConfig.getSomeValue(); result = "foo";
        }};

        testMe.doStuff();

        new Verifications() {{
            myAppConfig.getSomeValue(); times = 1;
        }};
    }
}
但是,当我运行测试时,不会调用模拟的ConfigFactory.create(),JUnit报告:

Missing 1 invocation to:
org.aeonbits.owner.ConfigFactory#create("interface MyAppConfig", [])

有人能举例说明模拟所有者配置对象的正确方法吗?

这里的“正确方法”是不要模拟任何东西。问问你自己,你是否需要测试你的代码是否使用了一些配置属性,或者它是否以某种特定的方式(例如,通过调用特定类中的某个方法)获得它?正如问题本身所说,这是你首先需要的;因此,模拟不是解决方案。@Rogério您能推荐一种更好的方法来测试代码是否使用了配置属性吗?我认为证明它正在使用配置属性的唯一方法是确保它请求配置值,而不是遵从一个神奇的字符串(示例中没有的是检查它是否使用了配置值)。