当前位置: 首页 > 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…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

规则与人性的天平——由高考迟到事件引发的思考

当那位身着校服的考生在考场关闭1分钟后狂奔而至&#xff0c;他涨红的脸上写满绝望。铁门内秒针划过的弧度&#xff0c;成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定"&#xff0c;构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...

【java面试】微服务篇

【java面试】微服务篇 一、总体框架二、Springcloud&#xff08;一&#xff09;Springcloud五大组件&#xff08;二&#xff09;服务注册和发现1、Eureka2、Nacos &#xff08;三&#xff09;负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...

如何把工业通信协议转换成http websocket

1.现状 工业通信协议多数工作在边缘设备上&#xff0c;比如&#xff1a;PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发&#xff0c;当设备上用的是modbus从站时&#xff0c;采集设备数据需要开发modbus主站&#xff1b;当设备上用的是西门子PN协议时&#xf…...