`
longgangbai
  • 浏览: 7334671 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SWTBot中运行失败截屏的控制.

阅读更多

            在swtbot中运行失败会生成失败的截屏图片会在项目的根目录下生成一个默认的screenshots目录存在失败的截屏图片.

关于截屏的ScreenshotCaptureListener实现了一个junit失败通知类接口RunListener.

package org.junit.runner.notification;

import org.junit.runner.Description;
import org.junit.runner.Result;

public class RunListener {
	public void testRunStarted(Description description) throws Exception {
	}

	public void testRunFinished(Result result) throws Exception {
	}

	public void testStarted(Description description) throws Exception {
	}

	public void testFinished(Description description) throws Exception {
	}

	public void testFailure(Failure failure) throws Exception {
	}

	public void testAssumptionFailure(Failure failure) {
	}

	public void testIgnored(Description description) throws Exception {
	}
}

 

截屏的通知监听类为ScreenshotCaptureListener:

package org.eclipse.swtbot.swt.finder.junit;

import org.apache.log4j.Logger;
import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
import org.eclipse.swtbot.swt.finder.utils.SWTUtils;
import org.junit.runner.notification.Failure;
import org.junit.runner.notification.RunListener;

/**
 * Captures screenshots on failure notifications.
 *
 * @author Hans Schwaebli (Bug 259787)
 * @version $Id$
 * @noinstantiate This class is not intended to be instantiated by clients.
 */
public final class ScreenshotCaptureListener extends RunListener {
	/** The logger. */
	private static Logger	log					= Logger.getLogger(SWTBotApplicationLauncherClassRunner.class);

	/** Counts the screenshots to determine if maximum number is reached. */
	private static int		screenshotCounter	= 0;

	public void testFailure(Failure failure) throws Exception {
		captureScreenshot(failure);
	}

	private void captureScreenshot(Failure failure) {
		try {
			int maximumScreenshots = SWTBotPreferences.MAX_ERROR_SCREENSHOT_COUNT;
			String fileName = SWTBotPreferences.SCREENSHOTS_DIR + "/" + failure.getTestHeader() + "." + SWTBotPreferences.SCREENSHOT_FORMAT.toLowerCase(); //$NON-NLS-1$
			if (++screenshotCounter <= maximumScreenshots) {
				captureScreenshot(fileName);
			} else {
				log.info("No screenshot captured for '" + failure.getTestHeader() + "' because maximum number of screenshots reached: " //$NON-NLS-1$ 
						+ maximumScreenshots);
			}
		} catch (Exception e) {
			log.warn("Could not capture screenshot", e); //$NON-NLS-1$
		}
	}

	private boolean captureScreenshot(String fileName) {
		return SWTUtils.captureScreenshot(fileName);
	}
	
	public int hashCode() {
		return 31;
	}

	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		return true;
	}
	
}

 

 截屏相关的常量:

MAX_ERROR_SCREENSHOT_COUNT:控制截屏的次数;

	/**
	 * The maximum number of screenshots that SWTBot should capture. Defaults to 100. To set another default use the
	 * system property
	 * {@value org.eclipse.swtbot.swt.finder.utils.SWTBotPreferenceConstants#KEY_MAX_ERROR_SCREENSHOT_COUNT}.
	 */
	public static int			MAX_ERROR_SCREENSHOT_COUNT	= toInt(System.getProperty(KEY_MAX_ERROR_SCREENSHOT_COUNT, "100"), 100);

 

SCREENSHOTS_DIR:控制截屏目录名称:

	/**
	 * The directory in which screenshots should be generated. Defaults to "screenshots". To set another default use the
	 * system property {@value org.eclipse.swtbot.swt.finder.utils.SWTBotPreferenceConstants#KEY_SCREENSHOTS_DIR}.
	 */
	public static String		SCREENSHOTS_DIR				= System.getProperty(KEY_SCREENSHOTS_DIR, "screenshots");

 

SCREENSHOT_FORMAT:控制截屏的图片的格式:

	/**
	 * The screenshot image format to be used. Defaults to "jpeg". To set another default use the system property
	 * {@value org.eclipse.swtbot.swt.finder.utils.SWTBotPreferenceConstants#KEY_SCREENSHOT_FORMAT}. The value must be
	 * one these: BMP, GIF, ICO, JPEG, JPG, PNG or TIFF.
	 */
	public static String		SCREENSHOT_FORMAT			= System.getProperty(KEY_SCREENSHOT_FORMAT, "jpeg");

 

 

 

分享到:
评论

相关推荐

    swtbot运行原理

    6. **测试报告**:最后,SWTBot会生成测试报告,报告中包含每个测试用例的执行情况,成功或失败的信息,以及可能的错误堆栈跟踪。 在提供的文件中,“SWTBot工作机制.txt”应该详细介绍了SWTBot的内部工作流程和...

    swtbot详细例子说明网页分享

    首先,在Eclipse中打开`Help` -&gt; `Install New Software`,然后添加SWTBot的更新站点地址,选择要安装的版本,按照向导提示完成安装。 ### 示例详解 一个简单的SWTBot测试示例可能如下: ```java import org....

    SWTBot收集

    使用SWTBot,你可以编写测试脚本来模拟用户在Eclipse RCP应用中的各种操作。例如,你可以创建一个测试来打开特定的视图,点击某个按钮,检查结果是否符合预期。SWTBot提供了如`Bot.button()`、`Bot.menu()`和`Bot....

    如何为EclipseJFaceUI运行单元测试Java开发

    4. 在Eclipse中配置JUnit运行配置,指定SWTBot测试运行器。 5. 运行测试并根据结果迭代改进代码。 通过遵循这些步骤,开发者可以有效地对Eclipse JFace UI应用程序进行单元测试,确保代码的质量和稳定性。

    swtbot 详细例子说明

    在"swtbotw例子"中,我们可以深入理解SWTBot的用法和功能。 首先,SWTBot提供了一种简洁的API,用于选择和操作UI元素,如按钮、文本框、菜单项等。例如,你可以使用`Bot.button()`或`Bot.menuItem()`来定位并触发...

    SWTBot自动化测试学习软件

    SWTBot是一款强大的开源自动化测试工具,主要用于Java GUI...在实际项目中,结合版本控制系统(如Git)、持续集成工具(如Jenkins)以及代码质量管理工具(如SonarQube),SWTBot的自动化测试能力将发挥更大的作用。

    swtbot学习资料

    在SWTBot中,你可以使用查找机制来定位GUI元素。这可以通过Widget的属性,如标签、ID或位置来实现。例如,`bot.button("OK")` 将找到并返回一个标签为"OK"的按钮对象,然后可以调用其方法执行点击操作。 接下来,...

    SWTBot插件包及例子

    标题中的"SWTBot插件包"指的是一个包含SWTBot库及相关工具的集合,它为Eclipse开发环境提供了一种集成的测试解决方案。通过安装这个插件,开发者可以利用SWTBot的强大功能来自动化SWT和JFace构建的图形用户界面(GUI...

    使用SWTBOT进行GUI自动化测试

    SWTBOT的核心优势在于其能够准确识别和操作界面元素,即使这些元素在不同的运行环境中可能有所变化。 #### SWTBOT的关键特点 - **易于学习与使用**:对于熟悉Eclipse RCP的开发者来说,SWTBOT的API相对直观易懂。 -...

    swtbot eclipse插件 测试界面

    swtbot eclipse插件 测试界面

    SWT的自动化测试框架

    6. **异常处理和调试**:如果测试失败,可以利用SWTBot提供的信息定位问题,进行调试和修复。 **四、SWTBot与其他测试框架的比较** 虽然SWTBot专为SWT和RCP应用设计,但与其他自动化测试框架如Selenium相比,它的...

    Web页面测试-swtbot

    ### Web页面测试-swtbot #### 一、Web页面测试的重要性与挑战 随着互联网和内部网(Intranet)的迅速发展,Web技术已经成为影响工业、商业、医疗、教育、政府乃至个人生活的关键技术之一。越来越多的传统信息系统...

    SWT的详解,例子,介绍

    1. **安装和配置**:如何在已有的Eclipse环境中安装SWTBOT及其依赖,配置测试运行环境。 2. **基本概念**:了解SWTBOT的核心类,如`SWTBot`、`BotFactory`和`WidgetFinder`,以及它们在测试中的作用。 3. **选择和...

    scenarioo-e4-swtbot-example-integration

    方案示例-swtbot-e4 结合使用场景和SWTBot来测试和记录Eclipse RCP e4示例应用程序的示例UI测试和Scenarioo集成可在plugins/org.scenarioo.example.e4.test/src/org/scenarioo/example/e4文件夹中找到。构建并运行...

    SWTBot - SWT/Eclipse functional testing-开源

    SWTBot是用于SWT / RCP应用程序的自动化和测试工具,具有记录和回放脚本的功能。 功能将包括基于文本的脚本,对测试套件的回放,报告和多线程回放的ant支持。

    eclipse4.4.4+gmf+swtbot

    NULL 博文链接:https://mwhgjava.iteye.com/blog/2257771

    pdi-ui-test:基于SWTBot的用于Pentaho数据集成的UI测试的集合

    【标题】"pdi-ui-test"是一个专门针对Pentaho数据集成(PDI)的UI自动化测试框架,它利用了SWTBot库来实现对PDI用户界面的全面测试。 【描述】该项目"pdi-ui-test"的核心目标是提供一个高效、可靠的测试套件,确保...

    SWT-Designer教程

    文档中未详细说明如何配置SWT环境,但通常情况下,安装了Eclipse后可以通过安装额外的插件(如SWTBot)来增强对SWT的支持。 - **设置Java环境**:确保已经正确设置了Java环境变量,并且使用的JRE版本至少为Java ...

Global site tag (gtag.js) - Google Analytics