Java 如何在mule Junit测试中断言实际的对象列表,其中实际的mule流返回POJO'的列表;s

Java 如何在mule Junit测试中断言实际的对象列表,其中实际的mule流返回POJO'的列表;s,java,mule,Java,Mule,我试图断言由mule流返回的用户定义对象列表,如下面的testcase import static org.junit.Assert.*; import java.util.ArrayList; import org.junit.Assert; import org.junit.Test; import org.mule.api.MuleMessage; import org.mule.api.client.LocalMuleClient; import org.mule.tck.junit

我试图断言由mule流返回的用户定义对象列表,如下面的testcase

import static org.junit.Assert.*;

import java.util.ArrayList;

import org.junit.Assert;
import org.junit.Test;
import org.mule.api.MuleMessage;
import org.mule.api.client.LocalMuleClient;
import org.mule.tck.junit4.FunctionalTestCase;
import org.mule.transport.http.ReleasingInputStream;


public class UnitedTest  extends FunctionalTestCase{

    @Override
    protected String getConfigFile() {
        return "src/main/app/united.xml";

    }
    @Test
    public void sampletest() throws Exception {
        LocalMuleClient client =  muleContext.getClient();
        MuleMessage response = client.send("http://localhost:8083/united/CLE", "", null, 1000000);
            Assert.assertNotNull(response)  ;
            System.out.println(response.getPayload());
            Object obj = response.getPayload();
            ArrayList<Object> payloadObj = (ArrayList<Object>) obj;
            Object resObj = (Object) payloadObj.get(0);

            if(resObj instanceof Flight){

                Flight flght = (Flight)resObj;
                Assert.assertNotNull(flght);

            }
    }
    }

有关于如何断言arraylist和每个对象成员的大小的建议吗?

我不知道如何在HTTP中传递java对象。您需要以某种方式序列化。可能是xml、json或类似的格式。

这里有几点值得评论。 您尝试执行的断言(如果对象是正确的)将只验证有效负载的类型,而不是断言。也许你可以试着做一些比较。 如果您只需要验证有效负载I的类型,您还可以尝试isAssignableFrom方法,因为它将覆盖类及其父类(检查此链接)

但无论如何,关于您的特定错误,例外情况是告诉您不能执行此强制转换:

  ArrayList<Object> payloadObj = (ArrayList<Object>) obj;
ArrayList payloadObj=(ArrayList)obj;
这是因为在您使用客户端调用http端点之后,它将返回一个输入流,您应该在执行此类强制转换之前首先使用该输入流

如果http端点对您的测试不是很重要,您可以进行流引用。如果不是,您可以检查一些mule转换器


HTH

添加Java标记以启用语法突出显示!嗨,Victor,我不是在HTTP中传递java对象。发送一个带有参数的请求,RESTWeb服务返回一个JSON对象,我们将进一步转换为java对象以应用一些业务逻辑。当我们运行实际的mule流时,它可以正常工作,但问题是当我们运行junit执行断言时,如何从org.mule.transport.http.ReleasingInputStream获取对象列表
  ArrayList<Object> payloadObj = (ArrayList<Object>) obj;