![](/img/trans.png)
[英]How do I set a primitive private static final field in a class with private constructor using PowerMockito?
[英]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.