java - @Before注释方法期间的Mockito代码解决方案

标签 java junit4 mockito xunit

我是使用 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/

相关文章:

java - 如何强制终止数据源并重新加载连接池?

java - 打印 .TIF 文件

java - 无需声明新实例即可获取方法

java - 出现 hashcode 而不是 int,对象名称未正确显示?

java - 如何构建可配置的 JUnit4 测试套件?

java - JUNIT 与 Excel 输入数据

java - 如何将错误收集器用于带参数的 junit 测试方法

android - Mockito/电源 Mockito : unable to get expected output when mocking method of LayoutParams in android

java - Mockito 验证另一个静态类中的发送邮件方法

android - 如何用 mockito 测试 handler.postDelayed?