当前位置: 首页 > news >正文

独立维基和验收测试框架 Fitnesse 入门介绍

拓展阅读

junit5 系列教程

基于 junit5 实现 junitperf 源码分析

Auto generate mock data for java test.(便于 Java 测试自动生成对象信息)

Junit performance rely on junit5 and jdk8+.(java 性能测试框架。压测+测试报告生成。)

Fitnesse

完全集成的独立维基和验收测试框架

fitnesse

介绍

FitNesse 是一款用于指定和验证应用程序验收标准(需求)的工具。它充当了软件交付过程中不同利益相关者(专业领域)之间的桥梁。

其维基服务器使软件文档化变得简单。其测试执行功能允许您验证文档与软件之间的一致性,确保文档保持最新,并且软件不会出现回归问题。

为了使其正常工作,测试应该与业务代表一起在业务层面上定义。它们基本上是业务需求,以一种易于所有利益相关者理解的方式展示。当您的需求明确无误时,它们可以与您的应用程序自动验证。

为了使所有利益相关者都能轻松与FitNesse交互,需求可以通过Web浏览器创建和编辑。它就是一个维基!通过编写规范(也称为验收测试),您可以在团队(编程人员和非编程人员)中建立共同的理解。这在交付正确的系统方面非常有帮助。规范可以使用维基语法或富文本编辑器编写,因此不需要了解维基语法。

因为规范实际上可以执行,FitNesse提供了一种方法,即使对于非编程人员也可以演示应用程序是否按设计工作。这可以防止导致项目需求死亡的问题。FitNesse 的目标是在用户界面级别的下面运行,演示在给定应用程序的各种输入情况下,正确的结果被计算出来。在某种程度上,您可以将其视为应用程序的替代用户界面。

被说服了吗?在我们的两分钟示例中更深入了解FitNesse的工作原理。

如果您尚未这样做,请下载并安装FitNesse在您的计算机上。然后学习如何使用FitNesse维基编写验收测试。

Hello World

intro-demo 简体中文

  • 下载 fitnesse-standalone.jar

  • 启动

在7979端口启动fitnesse

D:\Tools\fitnesse>java -jar fitnesse-standalone.jar -p 7979
十一月 10, 2016 3:36:46 下午 fitnesse.ConfigurationParameter loadProperties
信息: 未找到配置文件 (D:\Tools\fitnesse\plugins.properties)
正在引导 FitNesse,完全集成的独立维基和验收测试框架。
根页面: fitnesse.wiki.fs.WikiFilePage: FitNesseRoot
日志记录器: 无
认证器: fitnesse.authentication.PromiscuousAuthenticator
页面工厂: fitnesse.html.template.PageFactory
页面主题: bootstrap
正在解包 FitNesse 资源的新版本。请耐心等待...
**********************************************************
文件已更新为新版本。
请查看发布说明
http://localhost:7979/FitNesse.ReleaseNotes
以了解新功能和修复。
**********************************************************
在端口 7979 上启动 FitNesse
  • 访问
localhost:7979
  • 编辑页面

根据提示,直接点击【编辑】,然后在末尾添加页面名称,如【MyFirstPage】,然后保存。页面名称遵循WikiWord的命名规则。

返回页面即可看到添加的页面。

MAC 上测试

启动

houbinbindeMacBook-Pro:fitnesse houbinbin$ ls
fitnesse-standalone.jar
houbinbindeMacBook-Pro:fitnesse houbinbin$ pwd
/Users/houbinbin/it/tools/fitnesse
houbinbindeMacBook-Pro:fitnesse houbinbin$ java -jar fitnesse-standalone.jar -p 7979
十一月 10, 2016 10:17:24 下午 fitnesse.ConfigurationParameter loadProperties
信息: 未找到配置文件 (/Users/houbinbin/IT/tools/fitnesse/plugins.properties)
正在引导 FitNesse,完全集成的独立维基和验收测试框架。
根页面: fitnesse.wiki.fs.WikiFilePage: FitNesseRoot
日志记录器: 无
认证器: fitnesse.authentication.PromiscuousAuthenticator
页面工厂: fitnesse.html.template.PageFactory
页面主题: bootstrap
正在解包 FitNesse 资源的新版本。请耐心等待...
**********************************************************
文件已更新为新版本。
请查看发布说明
http://localhost:7979/FitNesse.ReleaseNotes
以了解新功能和修复。
**********************************************************
在端口 7979 上启动 FitNesse

添加页面 MyFirstPage

1、在 tools/properties 中设置页面类型为 test

2、编辑页面,添加以下内容:

!define TEST_SYSTEM {slim}
!path /Users/houbinbin/IT/tools/fitnesse/fitnesse-standalone.jar
!path /Users/houbinbin/it/tools/fitnesse/
!|HelloWorld|
|sayHello?|
|Hello|

内容解释:

Line 1: 使用FitNesse的slim模块,也就是使用网页的形式描述测试用例

Line 2: fitnesse-standalone.jar jar文件路径。

Line 3: HelloWorld.class class文件存放路径。

  • HelloWorld.java
public class HelloWorld {public String sayHello(){return "Hello";}
}

通过命令编译后获得

$   javac HelloWorld.java

Line 4: 引入HelloWorld类

Line 5: 方法名称,带有?说明此方法为返回值,Line 6 为对应的返回值。如果只是age,则会调用对应setAge() 方法,下一行为设置的值。

测试

点击页面【测试】,结果如下

测试页面: 1 正确,0 错误,0 忽略,0 异常     断言: 1 正确,0 错误,0 忽略,0 异常 (0.530 秒)

相关文章:

独立维基和验收测试框架 Fitnesse 入门介绍

拓展阅读 junit5 系列教程 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) Junit performance rely on junit5 and jdk8.(java 性能测试框架。压测测试报告生成。) Fitnesse 完全集成的独立维基和验收测试…...

AI 初创公司趋势:Y Combinator 最新批次的见解

总部位于硅谷的著名创业加速器 Y Combinator (YC) 最近宣布了其 2023 年冬季队列,不出所料,约 31% 的初创公司(269 家中有 80 家)拥有自我报告的 AI 标签。在这篇文章中,我分析了这批 20-25 家初创公司,以了…...

tts语音合成原理

TTS(Text-to-Speech,文本到语音)语音合成技术是一种将文本数据转换为可听见的语音输出的技术。它允许计算机和其他电子设备读出文字信息,使得用户可以通过听的方式接收信息。TTS技术在无障碍服务、智能助手、语音导航、有声读物等…...

轮转数组题解

链接:189. 轮转数组 - 力扣(LeetCode) 这个题目很简单,因为说到了 k 是一个非负数,那么我们就可以 求模的时候就不用考虑的下标还会越界了,往右边 移动 其实就是当前下标 ik ,为了保证它能头尾相接并且不越…...

sqllab第二十四关通关笔记

知识点: 二次注入 先埋一个炸弹,然后通过其他路径引爆它 查看界面发现是一个登录框,尝试进行登录框的注入发现这里不存在注入点 那么就注册一个新的账户吧 通过点击注册,进入注册面板,注册一个新的账户 用户名为 re…...

web前端之多行文本擦除效果、文本逐个显示或展示、创建元素标签、querySelector、createElement、appendChild、requestAnimationFrame

MENU 版本一(requestAnimationFrame)版本二(setTimeout)版本三(css) 版本一(requestAnimationFrame) 前言 window.requestAnimationFrame()告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。该方法需要传入一个回调函数…...

一文解读ISO26262安全标准:功能安全管理

一文解读ISO26262安全标准:功能安全管理 1 安全生命周期1.1 概念阶段1.2 产品开发阶段1.3 生产发布后续阶段 2 安全管理的角色和职责3 安全活动的裁剪4 安全活动的评审5 安全活动的评估6 交付物 下文的表中,一些方法的推荐等级说明: “”表示…...

【华为OD机试】找座位【C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 在一个大型体育场内举办了一场大型活动,由于疫情防控的需要, 要求每位观众的必须间隔至少一个空位才允许落座。 现在给出一排观众座位分布图,座位中存在已落座的观众,请计算出, 在不移…...

LarkXR上新了 | Apollo多终端与XR体验的优化创新

作为领先的数字平行世界产品技术提供方,「Paraverse平行云」一直致力于为企业和开发者提供企业级实时云渲染解决方案。其多终端接入产品LarkXR Apollo,基于底层Runtime技术,实现了在Windows、Linux、MacOS、Android、iOS等多种操作系统下&…...

车载电子电器架构 - 网络拓扑

车载电子电器架构 - 网络拓扑 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师 (Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝完再挣扎,出门靠…...

2024蓝桥杯每日一题(DFS)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一:奶牛选美 试题二:树的重心 试题三:大臣的差旅费 试题四:扫雷 试题一:奶牛选美 【题目描述】 听说最近两斑点的奶牛最受欢迎,…...

Docker 笔记(五)--链接

这篇笔记记录了Docker 的Link。 官方文档: Legacy container links - Communication across links 目录 参考Legacy container linksConnect using network port mappingConnect with the linking systemThe importance of naming Communication across linksEnviro…...

如何处理Android悬浮弹窗双击返回事件?

目录 1 前言 1.1 准备知识 1.2 问题概述 2 解决方案 3 代码部分 3.1 动态更新窗口焦点 3.2 窗口监听返回事件 3.3 判断焦点是否在窗口内部 3.4 窗口监听焦点移入/移出 4 注意事项 4.1 窗口范围 4.2 空隙处的返回事件处理 1 前言 1.1 准备知识 1)开发环…...

高可用篇_A Docker容器化技术_II Docker环境搭建和常见命令

原创作者:田超凡(程序员田宝宝) 版权所有,引用请注明原作者,严禁复制转载 Docker安装 Docker 要求 CentOS7 系统的内核版本在 3.10以上 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。 …...

Vue.js+SpringBoot开发食品生产管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 加工厂管理模块2.2 客户管理模块2.3 食品管理模块2.4 生产销售订单管理模块2.5 系统管理模块2.6 其他管理模块 三、系统展示四、核心代码4.1 查询食品4.2 查询加工厂4.3 新增生产订单4.4 新增销售订单4.5 查询客户 五、…...

Python面试笔记

Python面试笔记 PythonQ. Python中可变数据类型与不可变数据类型,浅拷贝与深拷贝详解Q. 解释什么是lambda函数?它有什么好处?Q. 什么是装饰器?Q. 什么是Python的垃圾回收机制?Q. Python内置函数dir的用法?Q…...

springboot 查看和修改内置 tomcat 版本

解析Spring Boot父级依赖 去到项目的根pom文件中&#xff0c;找到parent依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>${springboot.version}…...

003——移植鸿蒙

目录 一、顶层Make分析 二、添加一个新的单板 2.1 Kconfig 2.2 Makefile 2.2.1 顶层Makefile 2.2.2 platform下的Makefile 2.2.3 platform下的bsp.mk文件 2.3 编译与调试 2.4 解决链接错误 三、内核启动流程的学习 3.1 韦东山老师总结的启动四步 3.2 启动文件分析…...

罗马数字转整数-力扣通过自己编译器编译

学会将力扣题目用自己自带的编译软件编译---纯自己想的本题解法 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如&#xff0c; 罗马数字 2 写做 II &#xff0c;即为两…...

深入解析JVM加载机制

一、背景 Java代码被编译器变成生成Class字节码&#xff0c;但字节码仅是一个特殊的二进制文件&#xff0c;无法直接使用。因此&#xff0c;都需要放到JVM系统中执行&#xff0c;将Class字节码文件放入到JVM的过程&#xff0c;简称类加载。 二、整体流程 三、阶段逻辑分析 3…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...