首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java最好的模拟框架是什么?

Java最好的模拟框架是什么?
EN

Stack Overflow用户
提问于 2018-10-18 00:38:01
回答 2查看 0关注 0票数 0

在Java中创建模拟对象的最佳框架是什么?为什么?每个框架的优缺点是什么?

EN

回答 2

Stack Overflow用户

发布于 2018-10-18 08:53:55

可以使用Groovy查看测试。在Groovy中,您可以使用'as'运算符轻松模拟Java接口:

代码语言:javascript
复制
def request = [isUserInRole: { roleName -> roleName == "testRole"}] as HttpServletRequest 

除了这个基本功能外,Groovy还提供了更多关于模拟前端的功能,包括强大的功能MockForStubFor类。

http://docs.codehaus.org/display/GROOVY/Groovy+Mocks

票数 0
EN

Stack Overflow用户

发布于 2018-10-18 10:07:36

JMockit上取得了成功。

这是非常新的,因此它有点原始且记录不足。它使用ASM动态重新定义类字节码,因此它可以模拟所有方法,包括静态,私有,构造函数和静态初始化器。例如:

代码语言:javascript
复制
import mockit.Mockit;

...
Mockit.redefineMethods(MyClassWithStaticInit.class,
                       MyReplacementClass.class);
...
class MyReplacementClass {
  public void $init() {...} // replace default constructor
  public static void $clinit{...} // replace static initializer
  public static void myStatic{...} // replace static method
  // etc...
}

它有一个Expectations界面,允许记录/播放场景:

代码语言:javascript
复制
import mockit.Expectations;
import org.testng.annotations.Test;

public class ExpecationsTest {
  private MyClass obj;

  @Test
  public void testFoo() {
    new Expectations(true) {
      MyClass c;
      {
        obj = c;
        invokeReturning(c.getFoo("foo", false), "bas");
      }
    };

    assert "bas".equals(obj.getFoo("foo", false));

    Expectations.assertSatisfied();
  }

  public static class MyClass {
    public String getFoo(String str, boolean bool) {
      if (bool) {
        return "foo";
      } else {
        return "bar";
      }
    }
  }
}

缺点是它需要Java 5/6。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档