java - 如何用 Java 编写测试来检查对象是否正在 JMock 或 JUnit 中使用?

标签 java testing junit jmock

我正在为 Java 程序编写一些测试,我需要测试我的对象是否被添加到列表中 x 次。

下面是一个假设的代码片段....

ObjectWithList objectWithList = new ObjectWithList();    

JMock context = new JMock();
ObjectInterface oInterfaceMock = (ObjectInterface)context.mock(ObjectInterface.class);

context.checking(new Expectations{{
    oneOf(oInterfaceMock).makeSureIamOnlyStoredSomewhereOnce();
}});

context.assertIsSatisfied(); // This will be successful if objectWithList calls add only 
//once. 

我不知道 JUnit 是否有更好的测试方法,如有任何帮助,我们将不胜感激。我一直在尝试进行谷歌搜索,并在 Stack 上搜索以前的问题,但我没有运气。

非常感谢大家,我们将不胜感激!

最佳答案

我建议在没有 JMock 的情况下这样做。您可以简单地编写一个函数来计算列表包含对象的次数:

public int getCount(List<?> list, Object object) {
  int count = 0;
  for (Object element : list) {
    if (object.equals(element)) {
      count++;
    }
  }
  return count;
}

还有其他可能的实现方式,但这一个显然是正确的。接下来,您可以编写一个断言:

public void assertAppearsNTimes(List<?> list, Object object, int n) {
  if (n == getCount(list, object)) {
    return;
  }
  fail("Object " + object + " does not appear in list "
      + n + " times: " + list);
}

关于java - 如何用 Java 编写测试来检查对象是否正在 JMock 或 JUnit 中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30009644/

相关文章:

java - JTextField 上的回调函数

ruby-on-rails - 如何使用 ActionController::TestCase#post 使用具有 http 基本身份验证的 Rest API?

python - 如何测试为 CBV ListView 生成的上下文中是否存在 'object_list'

azure - 如何使用 Azure DevOps 监控测试进度?

java - 为什么@Spy Abc abc 无法获取已经存在的实例?

java - 如何在java中显示像素值数组中的图像?

java - 将 eclipse java 项目转换为 maven 不会创建 src/test/java 目录

java - JUnitCore 在 Eclipse 插件中给出 "No runnable methods"错误

java - 玩! + 锡耶纳 + GAE + JUnit

java - 在 J2ME 中如何/在哪里保存敏感数据?