当前位置: 首页 > 知识库问答 >
问题:

使用Arquillian进行单元测试,没有默认容器

居焱
2023-03-14

我得到以下Arquillian错误:org.jboss.Arquillian.Container.test.impl.client.deployment.ValidationException:DeploymentScenario包含一个与注册表中任何定义的容器都不匹配的目标(DEFAULT)。请在类路径中至少包含1个可部署容器。

这是我的骆驼路线课

@Singleton public class App扩展RouteBuilder{

@Inject
private CamelContext context;

@Override
public void configure() throws Exception {

    from("file://src/main/resources/temp2/").routeId("camelmarian")
            .onException(WrongFileException.class)
            .handled(true)
            .process(new Processor() {
                public void process(Exchange exchange) throws Exception {
                    System.out.println("Wrong File Name " + exchange.getIn().getHeader("CamelFileName"));
                    exchange.getIn().setBody("Wrong extension");
                }
            })
            .id("mockerror")
            .end()
            .choice()
            .when(header("CamelFileName").regex("data[0-9]*.xml"))
            .process(new XmlProcessor())
            .id("mockxml")
            //.to("mock:xml")
            .when(header("CamelFileName").regex("data[0-9]*.csv"))
            .process(new CsvProcessor())
            // .to("mock:csv")
            .id("mockcsv")
            .when(header("CamelFileName").regex("data[0-9]*.txt"))
            .process(new TextProcessor())
            //.to("mock:txt")
            .id("mocktext")
            .otherwise()
            .throwException(new WrongFileException("Wrong file extension"));

}

}

@Inject
private CamelContext camelContext;

private MockEndpoint afterCSV;

private MockEndpoint afterXML;

private MockEndpoint afterTXT;

private MockEndpoint afterError;

@Before
public void setup() throws Exception {

    afterCSV = new MockEndpoint("mockCSV");
    afterXML = new MockEndpoint("mockXML");
    afterTXT = new MockEndpoint("mockTXT");
    afterError = new MockEndpoint("mockError");

    camelContext.getRouteDefinition("camelmarian").adviceWith(((ModelCamelContext) camelContext), new AdviceWithRouteBuilder() {
        @Override
        public void configure() throws Exception {
            weaveById("mockcsv").after().to(afterCSV);
        }
    });

    camelContext.getRouteDefinition("camelmarian").adviceWith(((ModelCamelContext) camelContext), new AdviceWithRouteBuilder() {
        @Override
        public void configure() throws Exception {
            weaveById("mockxml").after().to(afterXML);
        }
    });

    camelContext.getRouteDefinition("camelmarian").adviceWith(((ModelCamelContext) camelContext), new AdviceWithRouteBuilder() {
        @Override
        public void configure() throws Exception {
            weaveById("mocktext").after().to(afterTXT);
        }
    });

    camelContext.getRouteDefinition("camelmarian").adviceWith(((ModelCamelContext) camelContext), new AdviceWithRouteBuilder() {
        @Override
        public void configure() throws Exception {
            weaveById("mockerror").after().to(afterError);
        }
    });

    camelContext.start();

}

@After
public void destroy() {
    afterCSV.reset();
    afterError.reset();
    afterTXT.reset();
    afterCSV.reset();
}

@PreDestroy
public void stopContext() throws Exception {
    camelContext.stop();
}

public MockEndpoint getAfterCSV() {
    return afterCSV;
}

public MockEndpoint getAfterXML() {
    return afterXML;
}

public MockEndpoint getAfterTXT() {
    return afterTXT;
}

public MockEndpoint getAfterError() {
    return afterError;
}
@Inject
CamelContextSetup camelContextSetup;


@Before
public void before() throws Exception {
    camelContextSetup.setup();
}

@After
public void after() {
    camelContextSetup.destroy();
}

@Deployment(testable = false)
public static Archive<?> createArchive() {
        return ShrinkWrap.create(JavaArchive.class)
                .addClass(App.class)
                .addClass(CamelContextSetup.class);
}

@Test
public void testReceived() throws InterruptedException {

    File tempFile = new File("src/main/resources/temp/data.xml");
    if (tempFile.renameTo(new File("src/main/resources/temp2/" + tempFile.getName())))
        System.out.println("failed to move file");
    else {
        camelContextSetup.getAfterXML().expectedMessageCount(1);
        assertMockEndpointsSatisfied();
    }
}

@Test
public void testError() throws InterruptedException {
    File tempFile = new File("src/main/resources/temp/data4.pl");
    if (tempFile.renameTo(new File("src/main/resources/temp2/" + tempFile.getName())))
        System.out.println("failed to move file");
    else {
        camelContextSetup.getAfterError().expectedMessageCount(1);
        assertMockEndpointsSatisfied();
    }
}

共有1个答案

徐焱
2023-03-14

您必须在POM中添加一些依赖项。看起来应该是这样的:

<dependency>
    <groupId>org.jboss.arquillian.container</groupId>
    <artifactId>arquillian-weld-ee-embedded-1.1</artifactId>
    <version>1.0.0.CR9</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.jboss.weld</groupId>
    <artifactId>weld-core</artifactId>
    <version>2.3.5.Final</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.6.4</version>
    <scope>test</scope>
</dependency>

来源:http://arquillian.org/guides/getting_started_pt/

 类似资料:
  • 问题内容: 我选择的数据库是MongoDB。我正在编写一个数据层API,以从客户端应用程序中抽象实现细节- 也就是说,我实质上是在提供一个公共接口(一个充当IDL的对象)。 我正在以TDD方式测试自己的逻辑。在每个单元测试之前,调用一个方法来创建数据库单例,此后,当测试完成时,将调用一个方法来删除数据库。这有助于促进单元测试之间的独立性。 几乎所有单元测试(即 执行上下文查询 )都需要先进行某种插

  • 我想测试以下骆驼路线。我在网上找到的所有例子都有以文件开头的路由,在我的例子中,我有一个Springbean方法,每隔几分钟就会被调用一次,最后消息被转换并移动到jms以及审计目录。 我对这条路线的写测试毫无头绪。目前我在测试用例中所拥有的是

  • 我正在构建一个android应用程序,它使用Firebase作为后端,并采用模型、视图和演示者架构。然而,Firebase是一种云服务的事实使我的android应用程序中的自动测试变得复杂。到目前为止,我已经构建了大部分身份验证系统,但无法看到如何在我的应用程序中实现Firebase代码的单元测试。在端到端测试方面,我也陷入了困境。 由于测试是任何android应用程序的基础,没有it应用程序开发

  • 在使用maven运行单元测试时,我遇到了这个异常。我的所有测试都没有执行。我的测试类的格式是 我正在运行以下命令来运行此命令: 使用的surefire插件是: 有人知道为什么我的测试没有执行吗?我用的是jUnit 4.8.2和surefire 2.14.1

  • 问题内容: 我的公司一直在评估Spring MVC,以确定我们是否应该在下一个项目中使用它。到目前为止,我喜欢我所看到的内容,现在,我正在查看Spring Security模块,以确定是否可以/应该使用它。 我们的安全要求非常基本。用户只需要能够提供用户名和密码即可访问网站的某些部分(例如获取有关其帐户的信息);并且网站上的页面很少(常见问题解答,支持等),应该为匿名用户提供访问权限。 在我创建的

  • 使用Android Studio进行单元测试 原文链接 : Unit Testing With Android Studio 原文作者 : Rex St John 译文出自 : 开发技术前线 www.devtf.cn 译者 : ZhaoKaiQiang 校对者: zhengxiaopeng 状态 : 校对完 这篇文章介绍了在Android Studio中进行单元测试的基础部分。 很多教程都指导你应