使用Junit进行Web服务功能/集成测试

时间:2015-08-27 06:55:10

标签: java unit-testing junit integration-testing fail-fast

这个问题的目的是找到一个比我更好的解决方案。

我的集成测试有以下要求

  1. 每个集成测试都在一个测试类中实现。
  2. 必须按顺序执行测试类中的方法。
  3. 每种方法都是整合/功能测试的一个步骤。
  4. 如果测试方法失败,则必须跳过测试类中的所有其他测试方法 - 因为找到后续错误没有意义。
  5. 我的解决方案看起来像这样:

    我只是从我的抽象测试类继承每个测试类:

    package myPackage;
    
    import java.util.List;
    import java.util.concurrent.CopyOnWriteArrayList;
    
    import org.junit.Before;
    import org.junit.Rule;
    import org.junit.rules.TestWatcher;
    
    public abstract class FailFastTest {
    
        private final static List<Class<?>> FAILED_CLASSES = new CopyOnWriteArrayList<Class<?>>() ;
    
        private final Class<? extends FailFastTest> thatClass = this.getClass();
    
        @Rule
        public final TestWatcher onFailedRule = new TestWatcher() {
            protected void failed(Throwable e, org.junit.runner.Description description) {
                FAILED_CLASSES.add(thatClass);
            };
        };
    
        @Before
        public final void beforeMethod() {
            final boolean failed = FAILED_CLASSES.contains(thatClass);
    
            if(failed) {
                System.out.println(thatClass + " FAILED. Aborting test.");
                org.junit.Assume.assumeTrue(!failed);
            }
         }
    }
    

    有没有人有更好的主意? 我的问题: 我不能多次并行运行这样的测试类,因为classname表示跳过...

    NO!这不是重复的! 我尝试编写以特定顺序使用不同(Web)服务的功能测试。问题“如何测试servlet?”是完全不同的!

    反正。我切换到了TestNG。 TestNG支持我的所有要求,并且像魅力一样工作。我不再需要胶水代码了! : - )

0 个答案:

没有答案