Maven 针对http服务器junit的集成测试?

Maven 针对http服务器junit的集成测试?,maven,junit,integration-testing,Maven,Junit,Integration Testing,我想对http服务器进行集成测试。到目前为止,我只有使用junit进行单元测试的经验 我有两个要求:框架必须有一个maven插件,测试用例代码必须是干净的——因此没有恶意攻击和样板代码 普通JUnit适用于单元测试,@测试方法是独立的。但是对于集成测试,我必须处理几个相关步骤,这些步骤必须交换某种状态(变量) 我已经读过: 得出的结论是,我不喜欢单元测试中的静态字段,我不想使用TestNG并在测试中添加依赖项注释,我不想把我的测试放在一个长时间的不可读的测试方法中 我想了解一些语法,如: pub

我想对http服务器进行集成测试。到目前为止,我只有使用junit进行单元测试的经验

我有两个要求:框架必须有一个maven插件,测试用例代码必须是干净的——因此没有恶意攻击和样板代码

普通JUnit适用于单元测试,@测试方法是独立的。但是对于集成测试,我必须处理几个相关步骤,这些步骤必须交换某种状态(变量)

我已经读过:

得出的结论是,我不喜欢单元测试中的静态字段,我不想使用TestNG并在测试中添加依赖项注释,我不想把我的测试放在一个长时间的不可读的测试方法中

我想了解一些语法,如:

public class MyIntegrationTest() {

   @Step
   public void testCreate(Context context) {context.put("foo");}

   @Step
   public void testUpdate(Context context) {context.get();}

   @Step
   public void testDelete(Context context) {context.get()}

}
所以我想增强/使用?单元,使其以上下文实例作为参数执行@Step方法。这些方法必须由框架按顺序调用,不能单独调用。在一个完美的世界中,所有单元GUI都会像@Test一样显示@Step,但这是可选的

有什么提示吗


Jan

第一点是检查用于与Maven进行集成测试的。其次,您必须根据使用的约定命名集成测试,之后您应该能够简单地使用maven(通过mvn clean verify)运行集成测试。
因此,这意味着您必须将集成测试命名为MyIntegrationIT.java…要定义执行顺序,您必须使用不同于JUnit的框架,可能是TestNG,它支持这种需求,但您已经排除了它。所以问题是你想做什么样的测试?页面流等可能是一个看起来可能值得的……

你可能也想考虑一下。检查http服务器是否返回响应非常有用

但是,它没有@Step功能。通常我会这样做:

@Test
public void MasterTest() {
  step1(..);
  step2(..);
  ....
}



public void step1(...){...}
   public void step2(...){...}

TestNG本身不包括在内,但我不想手动定义依赖项。我只是测试简单的http CRUD调用。我想这可以通过反射轻松实现自动化。毫无疑问,您可以编写一个定制的测试运行程序(实际执行您的测试的junit片段),并且必须完全按照您的要求执行。它可以检查类中@Step的每个方法,并按顺序执行它们。不是说它难,只是说它不在我熟悉的任何库中。根据下面给出的答案,我设置了以下环境:@Step annotations,我自己的JUnitRunner和我使用exec:java plugin+commandling executor通过maven+hudson启动测试用例。因此,如果您的第一个测试用例失败。“放”。以下所有测试用例也将失败?测试用例应该相互独立。嗨,Andreas,测试用例应该独立,测试步骤不独立。不要混淆默认的junit结构(一个方法==一个测试用例)。但万一有人挖出这篇老文章:我放弃了所描述的方法,现在就使用SpringWebMVC测试(不是100%替代我最初的需求)。