如何在由Ant运行的集成测试的类路径中挂载servlet.jar(也使用Jetty和RestAssured)

时间:2017-06-06 12:39:13

标签: junit ant jetty embedded-jetty rest-assured

我有一个项目https://github.com/paul-hammant/helloworld-war(其他人的分支,增值)。这是一个非常快速的构建,并且应该作为未转换到Maven / Gradle等的团队的集成测试的演示。

它有一个集成测试,可以调出Jetty,并运行一个集成测试,使用优秀的Rest-Assured来确认/ helloworld终点是否会完成“Hello World”业务。

@Before
public void beforeAll() throws Exception {
    Server server = new Server(8080);
    WebAppContext context = new WebAppContext();
    context.setResourceBase("./web");
    loadAnnotations(context);
    server.setHandler(context);
    server.start();
}

@Test
public void testSomething() {
    when()
        .get("/helloworld")
    .then()
        .statusCode(200)
        .body(equalTo("Hello, world\n"));
}

这一切都适用于Intellij,很好。

Ant barfs虽然说它无法找到servlet API。它肯定在类路径中。我已经尝试改变Jetty jar和servlet-api jar的顺序(不起作用)。我已经尝试从类路径中修改servlet jar(不起作用)。我不知道我还能做什么,除了将servlet jar推到ant_home / lib /这会很糟糕。建议?

1 个答案:

答案 0 :(得分:0)

嗯,蚂蚁看起来有点神秘。根本原因已在https://github.com/paul-hammant/helloworld-war中修复。有些罐子不得不从常规的Ant< classpath />中取出。指令,放在Ant的lib /文件夹中。

具体做法是:

  1. hamcrest核-1.3.jar
  2. hamcrest库-1.3.jar
  3. 的junit-4.12.jar
  4. 我上次使用Ant已经十年了。我对Junit的蠢事记忆犹新。看来随着时间的推移,Hamcrest已经加入了JUnit,需要一个安装工具。