繁体   English   中英

如何使用私有构造函数在 class 中测试此 static 成员?

[英]How do I test this static member in a class with private constructor?

所以我的 class 是:

public final class MyClass {

    private static MyObject myObject;

    public static void setMyObject(MyObject myObject) {
        MyClass.myObject = myObject;
    }

    private MyClass(MyObject myObject){
        setMyObject(myObject);
    }

    public static Optional<Object2> getObject2(params) {
        Optional<Object2> object2 =  myObject.execute(params);
        return object2;
    }

我正在尝试使用 Junit 进行测试

@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {

    @Mock
    private MyObject myObject;

    private MyClass myClass;

    @Before
    public void initialize() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void test1() {
        Mockito.doReturn(Optional.empty()).when(myObject).executeQueryWithArgument(any);
        myclass = new Myclass(myObject);

    }
}
        myclass = new Myclass(myObject);

此行失败并说将 MyClass 构造函数 package 设为私有。 有没有办法做到这一点而不这样做?

使用 set 方法将模拟的myObject添加到MyClass并编写测试,如下所示:

@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {

    @Mock
    private MyObject myObject;

    private MyClass myClass;

    @Before
    public void setUp() {
        MyClass.setMyObject(myObject);
    }

    @Test
    public void shouldDoSomething() {
        // Arrange
        Mockito.doReturn(Optional.empty()).when(myObject).executeQueryWithArgument(any);

       // Act
        Optional<Object2> actual = myClass.getObject2(.....);

       // Assert
       .....
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM