How to create own annotation for junit that will skip test if concrete exception was thrown during execution?

后端 未结 4 1422
逝去的感伤
逝去的感伤 2020-12-19 11:20

My application have several execution modes, and in 1 mode it is normal that some of my tests will throw a concrete exception. I need to annotate this methods with something

4条回答
  •  难免孤独
    2020-12-19 11:29

    What about using JUnit Extensions?

    The following example is taken from their Tutorial.

    It provides aditional annotations for Prerequisites (@Prerequisite): Ignore tests based on conditions.

    The required approach would be to check this during running tests. So you can simply add a @Prerequisite(requires="") annotation.

    public class TestFillDatabase {
        @Prerequisite(requires = "databaseIsAvailable")
        @Test public void fillData() {
            // ...
        }
    
        public boolean databaseIsAvailable() {
            boolean isAvailable = ...;
            return isAvailable;
        }
    }
    public class TestFillDatabase {
        @Prerequisite(requires = "databaseIsAvailable")
        @Test public void fillData() {
            // ...
        }
        public boolean databaseIsAvailable() {
            boolean isAvailable = ...;
            return isAvailable ;
        }
    }
    

    This specified methods with @Prerequisite(requires = "databaseIsAvailable") must be a public method, returning a boolean or Boolean value.

    If these methods will be consolidated in helper classes, you can also specify static methods within a class to be called using @Prerequisite(requires = "databaseIsAvailable", callee="DBHelper").

    public class TestFillDatabase {
        @Prerequisite(requires = "databaseIsAvailable", callee="DBHelper")
        @Test public void fillData() {
            // ...
        }
    }
    public class DBHelper {
        public static boolean databaseIsAvailable() {
            boolean isAvailable = ...;
            return isAvailable ;
        }
    }
    

提交回复
热议问题