java代码mock Java代码模拟

java 如何mock参数package cn.outofmemory.junit.jmockit;
import mockit.NonStrictExpectations;
import mockit.Injectable;
import mockit.MockUp;
import mockit.Mocked;
import mockit.Mockit;
import mockit.NonStrict;
import mockit.Tested;
public class MockTargetTest {
@BeforeClass
static public void beforeClass() {
Mockit.setUpMocks();
}
@Mocked
private MockTarget mt;
@Test
public void testPrivateMethodMock() {
new NonStrictExpectations(mt) {
{
// 对私有方法进行mock
this.invoke(mt, "privateMethod", anyString);
result = "Hello Object";
}
};
Object actual = mt.publicMethod();
assertEquals(actual,"Hello Object");
}
}
北大青鸟java培训:JavaScript代码测试必备的12款工具?1、JasmineJasmine是一个行为驱动的测试开发框架,用于对JavaScript代码进行测试 。
它不依赖其它任何JavaScript框架,也不需要DOM 。
它的语法简洁、明确 , 写测试非常容易 。
2、MochaMocha是一个功能丰富的JavaScript测试框架 , 既运行于Node.js环境中,也可以运行于浏览器环境中 。
Mocha以串行方式运行测试,能做出灵活而准确的报告,也能将测试中未捕捉的异常映射到正确的测试用例 。
3、ChaiChai是个支持BDD/TDD的库,可用于node和浏览器,可配合任何JavaScript测试框架使用 。
4、QUnitQUnit是个功能强大又易于使用的JavaScript单元测试框架 。
jQuery、jQueryUI和jQueyMobile项目都使用这个框架,它能测试普通的JavaScript代码 。
5、SinonSinon.JS为JavaScript提供了独立的spies、stubs和mocks[译者注:Spy、Stub和Mock都是测试专用名词,Stub常被翻译为桩,spies是Spy的复数形式,是一种可以监视方法、调用和参数的技术] 。
它不依赖任何东西,可以配合任何单元测试框架工作 。
6、KarmaKarma是针对连通浏览器的一个框架无关测试运行器 。
每一个测试结果对应每个浏览器,它的测试和显示都是通过命令行暴露给开发者的,这样他们就可以看到浏览器测试的通过或失败 。
7、SeleniumSelenium有一个简单的目标:就是自动化浏览器 。
它主要用于自动化测试web应用程序,但是只是很简单地考虑到了基于网络的管理任务 。
8、WebdriverIOWebdriverIO允许用户仅添加几行代码就可以控制浏览器或移动应用程序,使测试代码更简单、简洁、易读 。
集成的TestRunner同样允许你以同步的方式调用异步命令,这样你不需要关心如何处理Promise以避免竞态条件 。
此外,它取消了所有的繁琐的设置工作,并且会为您管理的Selenium会话 。
9、NightwatchNightwatch.js是一个易于使用的Node.js,它是为基于浏览器的app和网站设计的终端到终端(E2E)的测试方法 。
它使用强大的W3CWebDriverAPI,用于在DOM元素上执行命令和断言 。
10、PhantomCSSPhantomCSS获得CasperJS捕获的屏幕截图,并使用Resemble.js将其与基准图进行对比 , 以测试RGB像素差异 。
java课程发现PhantomCSS然后生成图像差异对比 , 用于帮助您找到原因 。
11、PhantomFlowPhantomFlow使用决策树提供UI测试方案 。
针对PhantomJS,CasperJS和PhantomCSS的NodeJS包装器——PhantomFlow能够流畅地在代码中描述用户流程,同时生成用于可视化的结构化树数据 。
怎么mockito方法的内部对象怎么mockito方法的内部对象?Mockito是一个针对Java的mocking框架 。它与EasyMock和jMock很相似,但是通过在执行后校验什么已经被调用,它消除了对期望行为(expectations)的需要 。其它的mocking库需要你在执行前记录期望行为(expectations) , 而这导致了丑陋的初始化代码 。下文为转载 , 但原文有问题,错误的地方特地标红了
Introduction
Code in which new objects are created can be difficult to test. There are a number of patterns for doing this; two of them are discussed here. Both of these patterns may require rearranging your code a little, to make it more testable. Writing code that's easily testable is a good thing to be doing, regardless of which mocking framework you end up using.
Details
Pattern 1 involves factoring uses of new into one-line methods, then using a Mockito spy. This is the simpler of the two patterns. Pattern 2 involves factoring uses of new into a separate class and injecting it. It's a little more work, but it can be more powerful. The new calls that you want to factor out (using either pattern) are those where an object is created, that you are likely to want to mock. It is recommended that you use one or other of these patterns, whenever you find yourself writing new, on a class that's in your code base (as opposed to a JDK class or a class from a third party library).
接口自动化测试之MockMock介绍
1.找到要替换java代码mock的对象:java代码mock我们需要测试的是visit_ustack这个函数java代码mock , 那么我们需要替换掉send_request这个函数 。
2.实例化Mock类得到一个mock对象java代码mock,并且设置这个mock对象的行为 。在成功测试中,我们设置mock对象的返回值为字符串“200”,在失败测试中 , 我们设置mock对象的返回值为字符串"404" 。
3.使用这个mock对象替换掉我们想替换的对象 。我们替换掉java代码mock了client.send_request
4.写测试代码 。我们调用client.visit_ustack(),并且期望它的返回值和我们预设的一样 。
上面这个就是使用mock对象的基本步骤了 。在上面的例子中我们替换了自己写的模块的对象,其实也可以替换标准库和第三方模块的对象,方法是一样的:先import进来 , 然后替换掉指定的对象就可以了 。
Mockrunner用在J2EE环境中进行应用程序的模拟测试 。它不仅支持Struts actions,servlets,过滤器和标签类,还包括一个JDBC和一个JMS测试框架,可以用于测试基于EJB的应用程序 。
Mockrunner扩展了JUnit并模拟了必要的行为,而无需调用实际的基础结构 。它不需要正在运行的应用程序服务器或数据库 。此外,它不会调用web容器或Struts ActionServlet 。它非常快速 , 使用户可以在测试的所有步骤中操纵所有涉及的类和模拟对象 。它可以用于为基于J2EE的应用程序编写非常复杂的单元测试,而不会产生任何开销 。Mockrunner不支持任何类型的容器内测试 。
Mockrunner不会读取任何配置文件,例如web.xml或struts-config.xml 。您可以使用Mockrunner API指定所有参数 。因此,可以将servlet,过滤器,标签和Struts动作作为可重用组件进行测试,而不管您在一个或另一个应用程序中使用的设置如何 。无法测试配置文件中的定义 。如果要这样做,可以将StrutsTestCase用于基于Struts的应用程序或Cactus 。
Mockrunner支持Java版本从1.3到1.6以及J2EE 1.3 , J2EE 1.4和JavaEE5 。尚不支持EJB 3.0 。Mockrunner支持Struts版本1.1、1.2和1.3 。
下载地址:Mockrunner download | SourceForge.net
最后:【可能给你带来帮助的教程】软件测试最新自学教程
mock java 干什么用的在单元测试中 , 经常需要进行一些mock操作 。现在已经有了一些比较不错的框架在做这些事情,比如:EasyMck,他在大多数情况下运行良好 , 但是对于某些结构的设计却显得无能为力 。
EasyMock等众多的mock框架仅能mock一些public,non static or final的方法,在大多数情况下这并没有什么问题 , 他可以处理大多数的问题,但是当测试的代码包含了一些静态方法 。
Cactus是一个基于JUnit框架的简单测试框架,用来单元测试服务端Java代码 。Cactus框架的主要目标是能够单元测试服务端的使用Servlet对象的Java方法如HttpServletRequest,
都是单元测试的框架 。例如你写了一个程序在功能测试也就是整体测试前想知道它的对错就可以借用这些工具写个单元测试案例单独测试这个类 或者某部分程序对错
如何对Java单例模式进行mockJAVA单例模式的几种实现方法饿汉式单例类packagepattern.singleton;//饿汉式单例类.在类初始化时,已经自行实例化publicclassSingleton1{//私有的默认构造子privateSingleton1(){}//已经自行实例化privatestaticfinalSingleton1single=newSingleton1();//静态工厂方法publicstaticSingleton1getInstance(){returnsingle;}}2.懒汉式单例类packagepattern.singleton;//懒汉式单例类.在第一次调用的时候实例化publicclassSingleton2{//私有的默认构造子privateSingleton2(){}//注意 , 这里没有finalprivatestaticSingleton2single;//只实例化一次static{single=newSingleton2();}//静态工厂方法publicsynchronizedstaticSingleton2getInstance(){if(single==null){single=newSingleton2();}returnsingle;}}在上面给出懒汉式单例类实现里对静态工厂方法使用了同步化,以处理多线程环境 。有些设计师在这里建议使用所谓的"双重检查成例".必须指出的是,"双重检查成例"不可以在Java语言中使用 。不十分熟悉的读者 , 可以看看后面给出的小节 。同样,由于构造子是私有的 , 因此,此类不能被继承 。饿汉式单例类在自己被加载时就将自己实例化 。即便加载器是静态的,在饿汉式单例类被加载时仍会将自己实例化 。单从资源利用效率角度来讲,这个比懒汉式单例类稍差些 。从速度和反应时间角度来讲,则比懒汉式单例类稍好些 。然而,懒汉式单例类在实例化时,必须处理好在多个线程同时首次引用此类时的访问限制问题,特别是当单例类作为资源控制器,在实例化时必然涉及资源初始化,而资源初始化很有可能耗费时间 。这意味着出现多线程同时首次引用此类的机率变得较大 。饿汉式单例类可以在Java语言内实现,但不易在C内实现,因为静态初始化在C里没有固定的顺序,因而静态的m_instance变量的初始化与类的加载顺序没有保证,可能会出问题 。这就是为什么GoF在提出单例类的概念时,举的例子是懒汉式的 。他们的书影响之大,以致Java语言中单例类的例子也大多是懒汉式的 。实际上,本书认为饿汉式单例类更符合Java语言本身的特点 。3.登记式单例类.packagepattern.singleton;importjava.util.HashMap;importjava.util.Map;//登记式单例类.//类似Spring里面的方法,将类名注册,下次从里面直接获取 。publicclassSingleton3{privatestaticMapmap=newHashMap();static{Singleton3single=newSingleton3();map.put(single.getClass().getName(),single);}//保护的默认构造子protectedSingleton3(){}//静态工厂方法,返还此类惟一的实例publicstaticSingleton3getInstance(Stringname){if(name==null){name=Singleton3.class.getName();System.out.println("name==null" "---name=" name);}if(map.get(name)==null){try{map.put(name,(Singleton3)Class.forName(name).newInstance());}catch(InstantiationExceptione){e.printStackTrace();}catch(IllegalAccessExceptione){e.printStackTrace();}catch(ClassNotFoundExceptione){e.printStackTrace();}}returnmap.get(name);}//一个示意性的商业方法publicStringabout(){return"Hello,IamRegSingleton.";}publicstaticvoidmain(String[]args){Singleton3single3=Singleton3.getInstance(null);System.out.println(single3.about());}}
【java代码mock Java代码模拟】关于java代码mock和Java代码模拟的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读