我是使用 Mockito 框架(和行为/测试驱动开发)并使用 帮助我编写一些代码;
我正在为 xml 编写自己的 Java 库来创建图形内容,
我首先尝试验证一些行为:
(MockitoAnnotations.initMocks(Class)
用于BaseTestClass
):
public class GeneralXml extends BaseTestClass {
private static final String TAG = "General XML";
@Mock(name="xml") private XmlGraphics mockXML;
@Before
public void setUp() throws Exception{
//stub method parseDimension
when(mockXML.parseDimension(anyString()))
.thenReturn(500);
// stub method parsePosition: 500 X 500 X 500 is an
// arbitrary dimension of window
when(mockXML.parsePosition(anyString()))
.thenReturn(
new Random().nextFloat() * mockXML.parseDimension(Xml.WIDTH),
new Random().nextFloat() * mockXML.parseDimension(Xml.HEIGHT),
new Random().nextFloat() * mockXML.parseDimension(Xml.DEPHT));
// Now Colors must have betwwen 0 and 255
// (RGB color)
when(mockXML.parseColorComponent(anyString()))
.thenReturn(
new Random().nextInt(256),
new Random().nextInt(256),
new Random().nextInt(256));
}
但我在所有后续验证中都收到错误,例如:
@Test
public void mockPosition() {
Log.d(TAG, "mock", "x = "+mockXML.parsePosition(Xml.X));
Log.d(TAG, "mock", "y = "+mockXML.parsePosition(Xml.Y));
Log.d(TAG, "mock", "z = "+mockXML.parsePosition(Xml.Z));
verify(mockXML, times(3)).parsePosition(anyString());
}
我认为我的错误在于:
when(mockXML.parsePosition(anyString()))
.thenReturn(
new Random().nextFloat() * mockXML.parseDimension(Xml.WIDTH),
new Random().nextFloat() * mockXML.parseDimension(Xml.HEIGHT),
new Random().nextFloat() * mockXML.parseDimension(Xml.DEPHT));
这不是一个有效的代码?或者我误解了什么? 感谢您的帮助
最佳答案
尝试将其添加为 setUp() 函数中的第一行:
MockitoAnnotations.initMocks(this);
关于java - @Before注释方法期间的Mockito代码解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7178071/