欢迎使用普元产品知识库,本知识库包含普元应用开发平台EOSPlatform,流程平台BPS,企业服务总线ESB,微服务平台Microservice,运维管理平台Devops,数据集成平台DI
欢迎使用普元文档库
1、 问题(场景)描述:
如果使用Junit进行EOS程序的测试
2、 适用环境:
通用
3、 原因分析、解决方法或过程:
(1) 导入附件源代码
(2) 导入测试框架项目,启动服务器,执行用例
逻辑流测试用例:com.primeton.eos.BizFlowTest
public class BizFlowTest { @Test public void testBizFlow(){ try { ServiceContext context = new ServiceContext(); //传入逻辑构件名 ILogicComponent logicCompoent = context .locateBizLogic("com.primeton.eos.newcomponent"); //第一个参数是逻辑流方法名,第二个参数是逻辑流的输入参数 Object[] objs = logicCompoent.invoke("newbiz" , new String[]{"test"}); //检查逻辑流返回值,达到测试目的 Assert.assertEquals("test", objs[0]); } catch (Exception e) { //正常情况下,调用逻辑流出错,则用例失败 Assert.fail(); e.printStackTrace(); } catch (Throwable e) { // 正常情况下,调用逻辑流出错,则用例失败 Assert.fail(); e.printStackTrace(); } } }
页面流测试用例:com.primeton.eos.PageFlowTest
public class PageFlowTest { IProcessor processor = new HttpPageFlowProcessor(); { processor.setRequestSuffix(".flow"); } /** * 调用页面流,检查页面流中设置的request变量 * @throws Exception */ @Test public void testPageFlow() throws Exception { //分别mock一个请求和响应 HttpServletRequestMock request = new HttpServletRequestMock(); HttpServletResponseMock response = new HttpServletResponseMock(); //通过request发起页面流的调用 request.setRequestURI("com.primeton.eos.newflow.flow"); processor.process(request, response); //检查页面中设置的请求变量是否正确,以达到测试目的 assertEquals("123", request.getAttribute("ret")); } }
评论
用户 -4cac6 发表:
不能在Studio里直接使用Junit测试,由于EOS是一个WEB应用,本质上是两个进程,无论是不是EOS应用这样做都是无法执行的。
1、EOS Server是一个Web应用,逻辑流运行在EOS Server这个进程内。在Studio中启动Server,是一个单独的进程,不同于Studio的原有的那个进程。
2、Eclipse 中默认的JUnit在调试时,是另外一个进程,与上述的EOS Server并不属于统一个进程。
3、隶属于两个进程,无论是EOS程序还是其他语言的程序,都无法直接进行访问,只可以通过远程访问的方式进行,。
4、如果需要在采用Junit进行单元测试,需要将EOS Server和Junit的用例运行在一个进程内。可以将Junit的用例写在EOS Server这个Web容器内,放在一个进程执行,调用才不会出错,即不能简单的通过Eclipse里的JUnit的工具栏进行单元测试。