入门
JavaLibCore是用Java编写的所有Robot Framework测试库的通用核心。
主要优点是
- 容易扩展和动态 - 只需添加关键字到类路径
- 核心处理与Robot Framework的通信 - 只需实现关键字
- 通用功能随时可用(例如关键字的参数计数检查)
Note 1.0版本支持Spring Library和Composite Library。
动机
Robot Framework支持两种Java库。更简单的方法是拥有一个单一的库类,它具有关键字作为方法。这是一个非常简单的入门方式,但是随着关键字数量的增加,即使您将关键字分割成多个类,即将导致糟糕的设计和难以维护的代码。
另一个更好的方法是使用一个实现方法的方法String [] getKeywordNames()和Object runKeyword(String keywordName,Object [] arguments))。这使我们有更多的自由来决定我们如何运行和实现我们的关键字。还应该记住在库中实现方法 String [] getKeywordDocumentation(String keywordName),具体来说 等于__intro__,这将用于生成API介绍一章。
JavaLibCore提供后一种库模型的实现。您可以通过简单地实现一个关键字接口来添加关键字,并在运行Robot时将类放在类路径中,或者使用@RobotKeyword注释标记方法 。
提供“核心”库
这些库不提供任何关键字。它们仅仅是图书馆的常见实现,所以你不需要你自己的。你只需要编写关键字实现。图书馆如何找到关键字如下所述。
使用Javalib Core创建关键字有两种不同的方式:
- ClassPathLibrary:在类路径中搜索关键字。类名称映射到关键字名称。要创建一个名为Do My Specific Task的关键字,您只需实现一个名为DoMySpecificTask的关键字类 ,并将其添加到类路径中。
- AnnotationLibrary:可以使用注释创建关键字。使用@RobotKeyword注释方法将使其注册为关键字。包含关键字方法的类必须使用@RobotKeywords注释进行标记 。
关键字和配置文件模式
JavaLibCore库需要您明确设置指定在哪些包中搜索关键字的模式。如果javalib-core只是扫描类路径中的所有类,那么在同一测试套件中使用两个或多个javalib-core库时,就会发生关键字命名冲突。
注意当关键字包含在jar文件中时,jar需要包含目录条目,否则javalib-core无法找到类。当使用Eclipse创建关键字jar时必须选中“添加目录条目”复选框。
说明
关键字模式必须从Java包的第一部分开始。例如** / **。类是不允许的。它必须像 com / ** / **。类。为了防止关键字名称冲突,使模式尽可能的限制是一个好主意。这就是为什么不推荐使用上面的模式,因为它使得javalib-core能够扫描包中以com开头的所有类。如果您的关键字都在同一个包中,则最好使用不使javalib-core查找其他位置的关键字模式,例如,如果所有关键字都位于com.acme.myproject.keyword下 ,则应使用 com / acme / myproject /keyword/**.class模式。
包装库
关键字模式使我的测试变得更不易读,我该怎么办?
的确,这更容易理解:
Setting | Value |
Library | MySpecialLibrary |
Setting | Value | Value |
Library | org.robotframework.javalib.library.ClassPathLibrary | com/acme/**/keyword/**/*.class |
比这个:
要解决此问题,您可以创建隐藏别名关键字模式的别名或包装库。例如,您可以在默认包中创建以下类:
import org.robotframework.javalib.library.ClassPathLibrary;
public class MySpecialLibrary extends ClassPathLibrary {
public MySpecialLibrary () {
super("com/acme/mycomponent/keyword/**/*.class");
}
}