下面是正在测试的类:
import java.util.Date;
public class Parent{
private Date dateA;
private Date dateB;
public void setDateA(Date _dateA){
dateA = _dateA;
}
public void setDateB(Date _dateB){
dateB = _dateB;
}
public Date getDateA(){
return dateA;
}
public Date getDateB(){
return dateB;
}
下面是测试本身:
@RunWith(PowerMockRunner.class)
@PrepareForTest({System.class, Parent.class})
public class testParent{
@Mock (name = "dateB") private Date someOtherDate;
@Mock (name = "dateA") private Date someDate;
@InjectMocks Parent p;
@Before
public void setup(){
Mockito.when(someOtherDate.getTime()).thenReturn(500l);
PowerMockito.mockStatic(System.class);
PowerMockito.when(System.currentTimeMillis()).thenReturn(2000l);
}
@Test
public void testGetDateAGetTimeShouldReturn1000() {
Mockito.when(someDate.getTime()).thenReturn(1000l);
Date result = p.getDateA();
assertEquals(1000l, result.getTime());
}
@Test
public void testGetDateBGetTimeShouldReturn500() {
Date result = p.getDateB();
assertEquals(500l, result.getTime());
}
测试时,由于@InjectMocks
不工作,这两个AsserteQuals
都会导致NullPointerException
。
我正在运行junit4.12、mockito-all-1.10.19和powermock-mockito-1.6.2-full。
有没有人知道为什么它不能用PowerMockRunner.class
正确注入的原因?在使用PowerMockRunner.Class
运行时,是否有解决此问题的方法?
如果要使用PowerMockRunner
,则必须调用MockitoAnnotations.initMocks()
来初始化使用注释创建的模拟。
但是,有几个很好的理由完全不使用injectmocks
。一般来说,您对如何设置测试的控制较少。最好只调用new
并手动传入参数。此外,如果有任何问题,莫基托将只是默默地失败。参见本文更多内容:
Mockito将尝试按照如下所述,仅通过构造函数注入、设置器注入或属性注入来注入模拟。如果以下任何一种策略失败,那么Mockito不会报告失败;即您必须自己提供依赖项。
问题内容: 我想清除并更改给定URL上的输入值。我使用的js不会执行任何操作,也不会导致任何错误。为什么会发生这种情况,我该如何解决? 问题答案: 一个可能且可能的答案是,在尝试清除的元素之前,您还有另一个具有相同名称的元素。 请检查html并检查是否找到多个元素,然后采用第一个。 另外,您可以使用css选择器,例如:
我的问题是为什么找不到“name”字段?
从TensorArray读取: 使用: 问题: 回溯(最近一次调用last):RLU培训中第130行的文件“\main.py”。train()文件“C:\Users\user\Documents\Projects\rl toolkit\rl_training.py”,第129行,在train self中_rpm,赛尔夫。批量大小,自行确定。梯度步数,记录步数b=self。在call result=
我正在尝试使用文件系统。我的< code>CMakeLists.txt中有< code>-std=c 11 -std=c 1y。GCC版本为4.9.2。然而,我得到了一个错误: 使用的正确方法是什么?
下面是一个多态字段: 其中是接口,是结构/类中其他位置的字段。 在这种情况下我怎么会有这种行为呢?
问题内容: 在下面的代码中,为什么我需要导入但可以不导入就可以使用? 问题答案: 为了方便起见,Java编译器会为每个源文件自动导入两个完整的软件包: java.lang包和 当前包(当前文件的包)。 请参考 oracle.com了解更多信息(http://docs.oracle.com/javase/tutorial/java/package/usepkgs.html)