【问题标题】:How to check value of local variable in method using JMockit or by other mechanism如何使用 JMockit 或其他机制检查方法中局部变量的值
【发布时间】:2015-02-06 06:58:47
【问题描述】:

如何在使用 JMockit 或其他机制的方法中检查局部变量的值?例如

public class ClassToTest
{
    DatabaseOperations databaseOperations;
    public void someMethod()
    {
        SomeClass someClass = new SomeClass();
        databaseOperations = new DatabaseOperations();
        someClass.setValue1(2);
        someClass.setValue2("some String value 3");
        databaseOperations.addObjectToDatabase(someClass);//I have mocked the class DatabaseOperations.
    }
}

public class SomeClass
{
    int value1;
    String value2;
    public int getValue1()
    {
        return value1;
    }
    public void setValue1(int value1)
    {
        this.value1 = value1;
    }
    public String getValue2()
    {
        return value2;
    }
    public void setValue2(String value2)
    {
        this.value2 = value2;
    }
}

如何检查 someMethod() 为本地实例 someClass 设置的值。

【问题讨论】:

  • 这是为了检查方法的争论。
  • 你想达到什么目的?我想,你想模拟SomeClass。如果没有,为什么不简单地使用 getter?
  • 我正在测试someMethod(),如何检查实例someClass 中的值?在这种情况下,我不能使用 getter。
  • 方法someMethod的目的是什么?您正在创建一个实例,然后直接丢弃它。 你到底想达到什么目的?

标签: java junit jmockit


【解决方案1】:

这个 sn-p 对你有用吗?

public class MyTest {

    @Test
    public void classToTest_someMethod(@Mocked final SomeClass someClassMock) {
        new Expectations() {
            {
                new SomeClass();
                result = someClassMock;

                someClassMock.setValue1(2);
                someClassMock.setValue2("some String value 3");
            }
        };
        new ClassToTest().someMethod();
    }
}

【讨论】:

  • 在这个 sn-p 代码中检查对方法 setValue1() 和 setValue2() 的调用,但我想获取方法的局部变量,就像我们可以通过使用 @ 的方法 getField() 获取实例变量一样987654325@班级。
  • sn-p 正在检查对方法 setValue1() 和 setValue2() 的调用(带有正确的参数),但它也验证这些方法是否被调用 on 在someMethod() 中创建的SomeClass 的 精确 实例(您称为本地 变量 i> 如果我理解你的话)
猜你喜欢
  • 1970-01-01
  • 2019-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-15
  • 1970-01-01
相关资源
最近更新 更多