`
yangzb
  • 浏览: 3471803 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Fitnesse使用

阅读更多

Fitnesse 的使用
一,介绍
Fitnesse是一种可以有效提供给软件开发前期各种角色合作的框架。
前端采用wiki界面便于编写case,后端将具体执行可以比较方便的添加各种feature。
前端case和后端feature共同作用起来就可以实现自动化测试。

二,原理
如何使wiki形式的case,驱动后端的class执行具体的代码,是Fitnesse的主要实现,现在存在两种方式

Fit: Framework for Integrated Testing
Fit是采用来控制Fitnesse test table执行的引擎。后台新添加的case需要引用该引擎。
Test table的格式也是来源于Fit。

Slim:Simple List Invocation Method
            instruction list 
+-------------+    o--->     +--------------------+      +----------+       +-----------------------------------------+
| FitNesse |---[socket]-->| SlimServer |----->| Fixtures |------>| SUT(System Under test) | 
+-------------+    <---o     +--------------------+      +----------+       +-----------------------------------------+ 
              response list

1)FitNesse通过命令行的方式触发slim Server
2)Fitnesse随后会发一个命令的list以及期待的结果到SlimServer。
3)然后slimServer会去调用相应的Fixture。

对各语言的支持情况:

 


三,内部包含的Fixture

Slim: simple list Invocation method

http://fitnesse.org/FitNesse.UserGuide.SliM.SlimProtocol

Fit:http :// fitnesse.org / FitNesse.UserGuide.FitFramework


四,添加Feature
1)Java API
采用Fit模式:
自己新建的fixture需要继承Fit中的一种Fixture

例如:

Package eg;
import fit.ColumnFixture;   
 
public class Division extends ColumnFixture   
{   
   public double numerator;   
   public double denominator;   
   public double quotient() {   
       return numerator/denominator;   
    }   
}
 
在wiki界面上就可以调用

 

如果采用slim模式:

我们需要添加的fixture:

package fitnesse.slim.test;

import java.util.List;
public class ShouldIBuyMilk {
private int dollars;
private int pints;
private boolean creditCard;

public void setCaseInWallet(int dollars){
this.dollars=dollars;
}
public void setPintsOfMilkRemaining(int pints){
this.pints=pints;
}
public void setCreditCard(String valid){
if(valid == "yes")
creditCard = true;
else
creditCard = false;
}
public String goToStore(){
if (pints==0&&(dollars>2||creditCard))
return "yes";
else
return "no";
}
 public void execute() {  }
 public void reset() {  } 
 public void table(List<List<String>> table) {}


}

添加wiki并执行就是这样的结果:

 

2)C++的支持:

为了实现对C++测试的支持,Fitnesse存在Fit的C++版本,便于新的C++ feature的加入

 我们需要下载CppTestTool,然后在同级目录下建立结构:

比如: addTest-----|-------bin

                                    |-------CppTestTools

                                    |-------include

                                    |-------lib

                                    |-------src

在src中添加我们需要的new feature

一旦触发wiki上的开始按钮,fitnesse就会给FitServer法请求,Fit就会去调用我们新加的这部分feature。

首先是main函数,int main(int argc, char* argv[])
{
 FixtureMaker* maker = new HomeGuardFixtureMaker();
 int status = FitnesseServer::Main(argc, argv, maker);
 return status;
}

在main函数中就会把用大的feature都注册过来

#include <Fit/Platform.h>
#include <Fit/Fit.h>
#include <Fit/Summary.h>
#include <Fit/ResolutionException.h>

#include "MgmtFixtureMaker.h"

#include "addsampletest.h"


#include <iostream>
#include <string>

using namespace std;

HomeGuardFixtureMaker::HomeGuardFixtureMaker()
{
}

HomeGuardFixtureMaker::~HomeGuardFixtureMaker()
{
}

Fixture* HomeGuardFixtureMaker::make(const string& fullName)
{

 string name = fullName;
   string libraryName = splitName(fullName).first;
    if (libraryName != fullName)
        name = splitName(fullName).second;

    PUBLISH_FIXTURE(Fixture);
    PUBLISH_FIXTURE(ColumnFixture);
    PUBLISH_FIXTURE(ActionFixture);
    PUBLISH_FIXTURE(PrimitiveFixture);
    PUBLISH_FIXTURE(Summary);

 // mgmt test
 PUBLISH_FIXTURE(addsampleTest)

    throw ResolutionException(name);

    return 0;
}

 

 


我们的新feature主体,需要用到的方法名,同样需要声明

#include <string>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <map>

#include <Fit/ActionFixture.h>
class addsampleTest : public Fixture
{
public:
    addsampleTest()
 { PUBLISH_ENTER(addsampleTest, std::string, addstring1);
   PUBLISH_ENTER(addsampleTest, std::string, addstring2);
   PUBLISH_ENTER(addsampleTest, std::string, addpath);
   PUBLISH_CHECK(addsampleTest, std::string, runTest);
 }

void addstring1(std::string input){
   string1 = input;   
}
 void addstring2(std::string input){
   string2 = input;
}
void addpath(std::string input){
   path=input;
}
 std::string runTest(){
   string command="";
   command=path+" "+string1+" "+string2+">ll.log";
  
   int tmp = system(command.c_str());
   return "success";
}
private:
   std::string string1;
    std::string string2;
    std::string path;
};

这样wiki界面上就可以直接调用了:

 

 

分享到:
评论
4 楼 yuhang_java 2013-06-10  
Fitnesse区分前后台,前台用wiki创建case,调用后台的测试class,我想问一下代码编译成的class是手动拷贝到Fitnesse.jar 再部署才能用么?  还是Fitnesse提供一个基础框架? 只需要在框架中写测试代码,打成jar包部署就可以了?
3 楼 穆绯 2013-05-30  
Could not invoke constructor
我也遇到了这个错误,不知道是为什么
2 楼 yuwuhen333 2012-10-24  
您好,我想请教一下,这个Fitnesse可以用以编写Android的自动化测试脚本,并且执行这些脚本吗?谢谢
1 楼 sunshineman 2012-07-12  
同样的代码试一下报错
Could not invoke constructor
不知道咋回事

相关推荐

    fitnesse 入门

    (FitNesse默认使用80端口,如果80被其他程序占用,可以使用run -p 8081 来启动,这里的端口可以随意指定) 当屏幕出现 D:\fitnesse&gt;java -cp fitnesse.jar fitnesse.FitNesse FitNesse (20070619) Started...

    fitnesse学习(整理版)

    使用命令行来添加用户和用户密码: D:\fitnesse&gt;java -cp fitnesse.jar fitnesse.authentication.Password -f password.txt -c fitnesse.authentication.HashingCipher Sophia Fit接受输入Null代表空指针,Blank...

    开源测试软件-fitnesse

    开源测试软件-fitnesse,使用方法自己百度,教程很多

    fitnesse学习资料

    fitnesse学习资料:关于fitnesse测试软件的一些整理文档

    FitNesse 常用Fixture总结

    这是本个学习FitNesse后,,,总结出来的常用的FitNesse的Fixture的用法,,可供参考...

    Fitnesse开发协作工具

    FitNesse是一套软件开发协作工具 FitNesse是帮助大家加强软件开发过程中的协作的工具。能够让客户、测试人员和开发人员了解软件要做成什么样,帮助建议软件最终是否达到了设计初衷。

    RestFixture:FitNesse固定装置,用于测试REST服务

    该夹具可与Fit(FitRestFixture)和Slim(Table:Rest夹具)流道一起使用。 概述: 获得Fitnesse休息一下( ) 固定装置,最新添加的内容( ) 具有名称空间支持的Rest Fixure( ) 说明文件:与FitNesse的版本

    FitNesse帮助文档

    FitNesse帮助文档

    fitnesse-standalone

    fitnesse-standalone.jar

    fitnesse-standalone.jar

    在cmd中Java -jar 输入fitnesse-standalone.jar运行fitnesse工具类,在浏览器中输入http://localhost进入fitnesse界面

    fitnesse帮助文档

    fitnesse帮助文档,对初学者很有用

    fitnesse_standalone.jar

    FitNesse是一个轻量级的、开源的框架,能够帮助开发团队方便的定义验收测试(Acceptance Tests),通过在web页面上简单的输出和预计输出的表格就可实现,并且可以运行这些测试以确定是否通过。

    Fitnesse-Demos:使用简单的Java类演示Fitnesse测试框架

    通过使用可以导入为Excel电子表格的简单测试用例,以及通过将Fitnesse作为独立的Wiki服务器运行,该项目展示了Fitnesse通过在Fitnesse Wiki上运行一次测试页面即可支持大量测试范围的有用性。 。 所有归功于支持...

    fitnesse:FitNesse-验收测试Wiki

    欢迎使用FitNesse,它是完全集成的独立验收测试框架和Wiki。 要开始使用,请访问 !快速开始和错误追踪器有错误或功能要求吗? 。社区有不是功能要求或错误报告的问题吗? 边缘构建可在FitNesse的最新稳定版本。 ...

    初识验收测试管理工具FitNesse

    FitNesse初识初识验收测试管理工具FitNesse软件测试刚刚开始研究FitNesse,我在这儿先抛块砖,大家有什么玉石啊,猫眼儿 初识验收测试管理工具FitNesse 软件测试 刚刚开始研究FitNesse,我在这儿先抛块砖,大家有...

    API自动化测试工具Fitnesse的C#使用实例

    自己钻研总结的,愿意与大家分享交流,也欢迎加QQ群:144691524交流Fitnesse的相关知识。

    fitnesse, 修补验收测试 Wiki.zip

    fitnesse, 修补验收测试 Wiki FitNesse 欢迎使用 FitNesse,完全集成的独立验收测试框架和 wiki 。要开始,请查看 http://fitnesse.org 。快速启动对FitNesse的一分钟描述。下载FitNesse插件和插件插件

    Test Driven .NET Development with FitNesse

    How to use Fitnesse Test Driven .NET Development

    HowTo Fitnesse ActionFixture in C#

    HowTo Fitnesse ActionFixture in C#

Global site tag (gtag.js) - Google Analytics