在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所以停止研究.
相关推荐
6. **测试报告**:最后,SWTBot会生成测试报告,报告中包含每个测试用例的执行情况,成功或失败的信息,以及可能的错误堆栈跟踪。 在提供的文件中,“SWTBot工作机制.txt”应该详细介绍了SWTBot的内部工作流程和...
**SWTBot详解** SWTBot,全称为`SWT博特`,是一个开源的测试自动化框架,专门用于测试基于Eclipse RCP(Rich Client Platform)和SWT(Standard Widget Toolkit)的应用程序。这个框架提供了丰富的API,允许开发者...
SWTBot是一个开源自动化测试框架,专为Eclipse RCP(Rich Client Platform)和SWT(Standard Widget Toolkit)应用程序设计。这个工具允许开发者和测试人员编写可重复的、可靠的UI测试,无需深入学习复杂的事件模拟...
5. **测试套件和测试运行器**:SWTBot集成了JUnit,允许你组织测试用例成测试套件,并通过JUnit测试运行器执行,方便进行持续集成和持续测试。 6. **可扩展性**:SWTBot的API设计允许开发者为新的控件或自定义行为...
它将涵盖如何设置测试环境,创建测试项目,编写和运行测试,以及调试测试遇到的问题。通过深入阅读和实践,你将能够熟练运用SWTBot进行GUI应用的自动化测试。 总之,SWTBot是Java GUI测试领域的一个强大工具,它...
SWTBot是一个强大的开源自动化测试框架,专门用于Eclipse RCP(Rich Client Platform)和SWT(Standard Widget Toolkit)应用程序的UI测试。它提供了一种简单而强大的方式来编写可维护的测试,使得开发者和测试人员...
SWTBot是一款强大的开源工具,专门用于自动化Eclipse平台上的SWT(Standard Widget Toolkit)用户界面测试。这个插件包提供了丰富的API,使得开发者能够轻松地编写测试脚本,进行功能验证、性能评估以及回归测试,...
swtbot eclipse插件 测试界面
SWTBOT的核心优势在于其能够准确识别和操作界面元素,即使这些元素在不同的运行环境中可能有所变化。 #### SWTBOT的关键特点 - **易于学习与使用**:对于熟悉Eclipse RCP的开发者来说,SWTBOT的API相对直观易懂。 -...
### Web页面测试-swtbot #### 一、Web页面测试的重要性与挑战 随着互联网和内部网(Intranet)的迅速发展,Web技术已经成为影响工业、商业、医疗、教育、政府乃至个人生活的关键技术之一。越来越多的传统信息系统...
SWTBot是用于SWT / RCP应用程序的自动化和测试工具,具有记录和回放脚本的功能。 功能将包括基于文本的脚本,对测试套件的回放,报告和多线程回放的ant支持。
NULL 博文链接:https://mwhgjava.iteye.com/blog/2257771
构建并运行执行shell脚本:start-tycho-build.sh此命令将构建完整的eclipse rcp产品并执行UI SwtBot测试。 限制:SWTBot测试可以在Linux机器上正确运行。 我们知道Windows无法正常工作。 Mac OS可能可以工作。
1. **安装和配置**:如何在已有的Eclipse环境中安装SWTBOT及其依赖,配置测试运行环境。 2. **基本概念**:了解SWTBOT的核心类,如`SWTBot`、`BotFactory`和`WidgetFinder`,以及它们在测试中的作用。 3. **选择和...
4. 在Eclipse中配置JUnit运行配置,指定SWTBot测试运行器。 5. 运行测试并根据结果迭代改进代码。 通过遵循这些步骤,开发者可以有效地对Eclipse JFace UI应用程序进行单元测试,确保代码的质量和稳定性。
【标题】"pdi-ui-test"是一个专门针对Pentaho数据集成(PDI)的UI自动化测试框架,它利用了SWTBot库来实现对PDI用户界面的全面测试。 【描述】该项目"pdi-ui-test"的核心目标是提供一个高效、可靠的测试套件,确保...
2. **平台无关性**:由于SWT本身是跨平台的,SWTBot也继承了这一特性,可以在多种操作系统上运行测试,包括Windows、Linux和macOS。 3. **事件模拟**:SWTBot能够模拟各种用户事件,如键盘输入、鼠标点击、窗口操作...
脚步: 克隆项目: git clone https://github.com/codenvy/eclipse-plugin.git执行以下命令: cd eclipse-plugin mvn clean install警告:它将使用 SWTBot 启动 UI 集成测试,注意不要在这些测试运行时抢占焦点以...