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

SWTBot运行参数跟踪

阅读更多

        在swtbot的单元测试中需要设置Run to Product的参数制,本来想通过参数配置,不用每次手动设置.运行研究结果.首先上图:

 

 

可以发现:

1.首先线程调用的Test的测试工作台WorkbenchTestable

  /**
     * Initializes the workbench testable with the display and workbench,
     * and notifies all listeners that the tests can be run.
     * 
     * @param display the display
     * @param workbench the workbench
     */
    public void init(Display display, IWorkbench workbench) {
        Assert.isNotNull(display);
        Assert.isNotNull(workbench);
        this.display = display;
        this.workbench = workbench;
        if (getTestHarness() != null) {
        	// don't use a job, since tests often wait for all jobs to complete before proceeding
            Runnable runnable = new Runnable() {
                public void run() {
                	// Some tests (notably the startup performance tests) do not want to wait for early startup.
                	// Allow this to be disabled by specifying the system property: org.eclipse.ui.testsWaitForEarlyStartup=false
                	// For details, see bug 94129 [Workbench] Performance test regression caused by workbench harness change
                	if (!"false".equalsIgnoreCase(System.getProperty(PlatformUI.PLUGIN_ID + ".testsWaitForEarlyStartup"))) {  //$NON-NLS-1$ //$NON-NLS-2$
                		waitForEarlyStartup();
                	}
                    getTestHarness().runTests();
                }
            };
            new Thread(runnable, "WorkbenchTestable").start(); //$NON-NLS-1$
        }
    }

 

2.然后调用UITestApplication类的runTests方法.

	/*
	 * (non-Javadoc)
	 * @see org.eclipse.ui.testing.ITestHarness#runTests()
	 */
	public void runTests() {
		fTestableObject.testingStarting();
		RemotePluginTestRunner.main(Platform.getCommandLineArgs());
		fTestableObject.testingFinished();
	}

 Platform.getCommandLineArgs()的参数值如下:

[-version, 3, -port, 60193, -testLoaderClass, org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader, -loaderpluginname, org.eclipse.jdt.junit4.runtime, -classNames, easyway.tbs.app.swtbot.st.SellSingleTicketEditorTest, -application, org.eclipse.swtbot.eclipse.core.swtbottestapplication, -product, org.eclipse.platform.ide, -testpluginname, easyway.tbs.app.swtbot]

 

 

-version, 3,  描述版本

-port, 60193, 描述端口

-testLoaderClass, org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader, 描述类加载器

-loaderpluginname, org.eclipse.jdt.junit4.runtime,  描述加载插件名称

-classNames, easyway.tbs.app.swtbot.st.SellSingleTicketEditorTest, 描述junit测试类

-application, org.eclipse.swtbot.eclipse.core.swtbottestapplication,   描述测试应用的类型为swtbot test

-product, org.eclipse.platform.ide,  描述具体swtbot测试的product对象

-testpluginname, easyway.tbs.app.swtbot]   描述当前 swtbot 的 junit所在的插件的名称

 

3.紧接着调用RemotePluginTestRunner的main方法通过类加载器调用特定类的特定方法.

 

/**
	 * The main entry point. Supported arguments in addition
	 * to the ones supported by RemoteTestRunner:
	 * <pre>
	 * -testpluginname: the name of the plugin containing the tests.
	  * </pre>
	 * @see RemoteTestRunner
	 */

	public static void main(String[] args) {
		RemotePluginTestRunner testRunner = new RemotePluginTestRunner();
		testRunner.init(args);
		testRunner.run();
	}

	/**
	 * Returns the Plugin class loader of the plugin containing the test.
	 * @see RemoteTestRunner#getTestClassLoader()
	 */
	protected ClassLoader getTestClassLoader() {
		final String pluginId = fTestPluginName;
		return getClassLoader(pluginId);
	}

	public ClassLoader getClassLoader(final String pluginId) {
		Bundle bundle = Platform.getBundle(pluginId);
		if (bundle == null)
			throw new IllegalArgumentException("No Classloader found for plug-in " + pluginId); //$NON-NLS-1$
		return new BundleClassLoader(bundle);
	}

	public void init(String[] args) {
		readPluginArgs(args);
		defaultInit(args);
	}

	public void readPluginArgs(String[] args) {
		for (int i = 0; i < args.length; i++) {
			if (isFlag(args, i, "-testpluginname")) //$NON-NLS-1$
				fTestPluginName = args[i + 1];

			if (isFlag(args, i, "-loaderpluginname")) //$NON-NLS-1$
				fLoaderClassLoader = getClassLoader(args[i + 1]);
		}

		if (fTestPluginName == null)
			throw new IllegalArgumentException("Parameter -testpluginnname not specified."); //$NON-NLS-1$

		if (fLoaderClassLoader == null)
			fLoaderClassLoader = getClass().getClassLoader();
	}

	protected Class loadTestLoaderClass(String className) throws ClassNotFoundException {
		return fLoaderClassLoader.loadClass(className);
	}

 

	

 

 综上所述:

        只需要调整RemotePluginTestRunner.main(Platform.getCommandLineArgs());的main方法的参数即可.但是由于RemoteTestRunner为eclipse 限制访问类org.eclipse.jdt.internal.junit.runner.RemoteTestRunner所以停止研究.

 

分享到:
评论

相关推荐

    swtbot运行原理

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

    swtbot详细例子说明网页分享

    **SWTBot详解** SWTBot,全称为`SWT博特`,是一个开源的测试自动化框架,专门用于测试基于Eclipse RCP(Rich Client Platform)和SWT(Standard Widget Toolkit)的应用程序。这个框架提供了丰富的API,允许开发者...

    swtbot 详细例子说明

    SWTBot是一个开源自动化测试框架,专为Eclipse RCP(Rich Client Platform)和SWT(Standard Widget Toolkit)应用程序设计。这个工具允许开发者和测试人员编写可重复的、可靠的UI测试,无需深入学习复杂的事件模拟...

    SWTBot自动化测试学习软件

    5. **测试套件和测试运行器**:SWTBot集成了JUnit,允许你组织测试用例成测试套件,并通过JUnit测试运行器执行,方便进行持续集成和持续测试。 6. **可扩展性**:SWTBot的API设计允许开发者为新的控件或自定义行为...

    swtbot学习资料

    它将涵盖如何设置测试环境,创建测试项目,编写和运行测试,以及调试测试遇到的问题。通过深入阅读和实践,你将能够熟练运用SWTBot进行GUI应用的自动化测试。 总之,SWTBot是Java GUI测试领域的一个强大工具,它...

    SWTBot收集

    SWTBot是一个强大的开源自动化测试框架,专门用于Eclipse RCP(Rich Client Platform)和SWT(Standard Widget Toolkit)应用程序的UI测试。它提供了一种简单而强大的方式来编写可维护的测试,使得开发者和测试人员...

    SWTBot插件包及例子

    SWTBot是一款强大的开源工具,专门用于自动化Eclipse平台上的SWT(Standard Widget Toolkit)用户界面测试。这个插件包提供了丰富的API,使得开发者能够轻松地编写测试脚本,进行功能验证、性能评估以及回归测试,...

    swtbot eclipse插件 测试界面

    swtbot eclipse插件 测试界面

    使用SWTBOT进行GUI自动化测试

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

    Web页面测试-swtbot

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

    SWTBot - SWT/Eclipse functional testing-开源

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

    eclipse4.4.4+gmf+swtbot

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

    scenarioo-e4-swtbot-example-integration

    构建并运行执行shell脚本:start-tycho-build.sh此命令将构建完整的eclipse rcp产品并执行UI SwtBot测试。 限制:SWTBot测试可以在Linux机器上正确运行。 我们知道Windows无法正常工作。 Mac OS可能可以工作。

    SWT的详解,例子,介绍

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

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

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

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

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

    SWT的自动化测试框架

    2. **平台无关性**:由于SWT本身是跨平台的,SWTBot也继承了这一特性,可以在多种操作系统上运行测试,包括Windows、Linux和macOS。 3. **事件模拟**:SWTBot能够模拟各种用户事件,如键盘输入、鼠标点击、窗口操作...

    eclipse-plugin:Eclipse 的 Codenvy 插件

    脚步: 克隆项目: git clone https://github.com/codenvy/eclipse-plugin.git执行以下命令: cd eclipse-plugin mvn clean install警告:它将使用 SWTBot 启动 UI 集成测试,注意不要在这些测试运行时抢占焦点以...

Global site tag (gtag.js) - Google Analytics