什么是TreeATE测试组件
基于TreeATE平台特定接口,专为上层测试脚本提供服务的组件称为TreeATE测试组件。测试组件通常以DLL文件形式存在。当然大家可参照样例中js或py后缀的文件作为组件,这些也是为了某些测试需要自定义的测试组件,但本文不作描述。
一般控制某个特定的仪器或产品时,可以将该部分分装成测试组件。以下就以源代码中Plugins/TA_MsgBox组件为例,介绍如何通过QT开发TreeATE测试组件。
新建项目工程
打开QT Creator,选择“文件”->“新建文件或项目”菜单,显示对话框。
在该对话框的“项目”中选择“Library”->“C++库”,再下一步选择“共享库”,并设置好测试组件名称(请根据实际情况定义测试组件名称),本样例的名称为TA_MsgBox。点击“下一步”直到创建测试组件工程。
定义导出接口
仍然以TA_MsgBox为例,打开头文件ta_msgbox.h
///
/// @brief common of the MessageBox
/// @author David Yin 2018-12 [email protected]
///
/// @license GNU GPL v3
///
/// Distributed under the GNU GPL v3 License
/// (See accompanying file LICENSE or copy at
/// http://www.gnu.org/licenses/gpl.html)
///
#include <QObject>
extern "C" TA_MSGBOXSHARED_EXPORT void* CreateDeviceInst(const char *strPara);
class TA_MSGBOXSHARED_EXPORT TA_MsgBox : public QObject
{
Q_OBJECT
public:
TA_MsgBox();
public slots:
bool BandObj(const QString& obj);
QString MsgBox(const QString& strPic, const QString& strMsg, const int type, const int mSec);
int AsyncMsgBox(const QString& strPic, const QString& strMsg, const int type, const int mSec);
QString CloseAsyncMsgBox(int nMsgBoxId);
protected:
QString cmdProcess(const QString& strCmd, int mSec);
private:
QString m_strObj;
QString m_strLstErr;
};
#endif // TA_MSGBOX_H
定义测试组件接口有以下几点需要注意
- 其中上面代码中的TA_MSGBOXSHARED_EXPORT为QT Creator自动添加的导出宏定义。实际你自己创建测试组件名称,例如xxx就是测试组件名称,那么xxxSHARED_EXPORT就是自动生成的导出定义。
- TA_MsgBox类需要继承QObject
- 需要定义统一的函数接口 CreateDeviceInst(const char *strPara); 注意为C接口,留意前缀:extern “C”
- 如果需要测试脚本能够调用到的函数,如同上面代码所示,请在导出函数前加上public slots关键字
实现接口
打开源文件ta_msgbox.cpp,添加CreateDeviceInst接口代码。在CreateDeviceInst接口中返回创建TA_MsgBox的实例。
void* CreateDeviceInst(const char *strPara)
{
Q_UNUSED(strPara)
return new TA_MsgBox();
}
注:new生成的对象实例将由TreeATE平台管理和释放。
其他函数接口实现参见TA_MsgBox源代码文件ta_msgbox.cpp。
以上仅以TA_MsgBox为例描述了测试组件开发方法,请根据实际测试需要开发自己的测试组件函数接口。
构建测试组件
TreeATE需要使用Release构建模式,请选择Release构建模式生成dll文件,最后参见TreeATE Dev开发指南导入测试组件即可。