为新操作员创建JUnit测试
你好,
我有以下简单的TestOperator和MyIOObject。
我正试图为这个操作符做JUnit测试。
TestOperator
1)是否有任何简单的方法来创建我的操作符对象(TestOperator)?要使用构造函数,我缺少OperatorDescription,它的构造函数似乎相当复杂(需要额外的类)。
2)如何将IO对象(IO)设置为输入端口:ce.getInputPorts().getPortByIndex(0)
非常感谢你的建议。
radone
我有以下简单的TestOperator和MyIOObject。
我正试图为这个操作符做JUnit测试。
TestOperator
公共类TestOperator扩展Operator {IO对象
//输入端口
protected InputPort inParam = getInputPorts().createPort("MyIOObject");
//输出端口
protected OutputPort outParam = getOutputPorts().createPort("MyIOObject");
public TestOperator(OperatorDescription描述){
超级(描述);
}
doWork()抛出operatoreexception {
//读取输入
myioobj = inParam.getData();
//增量值
ioObj。setValue(iobj . getvalue () + 1);
//输出
outParam.deliver (ioObj);
}
}
公共类myiooobject扩展ResultObjectAdapter {我对JUnit测试的看法如下:
Private int value = -1;
public void setValue(int value) {
这一点。Value = Value;
}
int getValue() {
返回this.value;
}
}
公共类CirclePixelsExtractorTest扩展TestCase {请问,有人能帮我吗?
@Test
testMeanValue()抛出operatoreexception {
//创建操作符
// ??????????????????????????????????????????????????????
// ????????????????????????1 ???????????????????????????
// ??????????????????????????????????????????????????????
OperatorDescription od = null;// (1) ??如何获得操作符描述??;
TestOperator ce = new TestOperator (od);
//创建IO输入数据
MyIOObject io = new MyIOObject();
io.setValue (5);
//提供IO数据作为输入
// ??????????????????????????????????????????????????????
// ????????????????????????2 ???????????????????????????
// ??????????????????????????????????????????????????????
ce.getInputPorts () .getPortByIndex(0)。//如何设置数据??;
//执行操作符
ce.doWork ();
//读取输出
MyIOObject io2 = ce.getOutputPorts().getPortByIndex(0).getData();
int res = io2.getValue();
/ /验证
assertequal (res);
}
}
1)是否有任何简单的方法来创建我的操作符对象(TestOperator)?要使用构造函数,我缺少OperatorDescription,它的构造函数似乎相当复杂(需要额外的类)。
2)如何将IO对象(IO)设置为输入端口:ce.getInputPorts().getPortByIndex(0)
非常感谢你的建议。
radone
标记:
0
答案
对于任何遇到同样问题的人:
答案(1)
OperatorDescription可以通过以下方法创建: 操作符的创建可以通过以下方式完成: 回答2)
你不需要OperatorDescription。如果调用了RapidMiner.init(),则可以使用
OperatorService.createOperator (YourOpClass.class)。
最好的
西蒙
你好,我正试图为我的操作符编写Junit测试用例。下面是我的操作员代码。你能帮我写一下测试用例吗
嗨@vc126m,
是否可以共享这个扩展的java项目文件或.jar文件来测试它并在这里提供反馈或帮助?
欢呼,
嗨@vc126m,
当你想为你自己的操作符编写JUnitTests时,你必须在测试类中初始化RapidMiner本身。你可以通过调用:
然后,您可以使用前面提到的OperatorService来创建操作符的实例。
有了这个实例,您可以实现任何您能想到的JUnit测试。如果你不太熟悉JUnit测试,你可以在网上找到很多教程(例如我使用的这).
您还可以做的是安装流程测试扩展在RapidMiner中使用。然后,你可以创建UnitTest进程(例如,你也可以将其存储在版本控制库中),并“运行并存储预期的结果”。之后,您可以运行“test process”来检查进程的结果是否发生了变化。
希望能有所帮助
费边