JUnit不识别在Abstract类的具体实现中定义的@Test案例

时间:2018-06-14 11:40:29

标签: java unit-testing junit abstract-class

这是我在JUnit中遇到的奇怪情况。

鉴于:

  1. 我需要创建单元测试来测试抽象类中定义的方法。

  2. 为此,我创建了一个 ConcreteAbstractClassImpl ,它扩展了 AbstractClass ,并为其中的抽象方法提供了虚拟响应。 / p>

  3. 为了定义测试,我创建了一个测试类 ConcreteAbstractClassImplTest 。 AbstractClass的所有非抽象方法都在本课程中使用 @Test 进行单元测试。

  4. 下面提供的代码示例:

    import static org.junit.Assert.*;
    
    @RunWith(PowerMockRunner.class)
    public class AbstractClassTest {
        @Mock
        private DependencyClass dependencyClassObj;
    
        @InjectMocks
        private ConcreteAbstractClassImpl concreteAbstractClassImpl ;
    
        @Before
        public void setUP() {
           .........
        }
    
        @Test
        public void test_non_abstract_method_AbstractClassImpl () {
             String response = concreteAbstractClassImpl.method_non_abstract();
             assertEquals(response, "method_non_abstract");
        }
    }
    
    class ConcreteAbstractClassImpl extends AbstractClass {
         private DependencyClass dependencyClassObj;
    
         public abstract String method_abstract(){
               return "dummy_response";
         }
    }
    
    class AbstractClass {
         @Autowired
         private DependencyClass dependencyClassObj;
    
         public abstract String method_abstract();
    
         public String method_non_abstract(){
             return "method_non_abstract";
         }
    }
    

    问题: 测试类运行完美,并通过 Run As>在Eclipse中单独运行时识别每个测试用例。 Junit测试。但是当我使用 Run As>构建整个项目时在pom.xml上的Maven Build 取消选中Skip Tests ,JUnit会忽略 ConcreteAbstractClassImplTest 中提到的所有测试。 JUnit可以正确识别不遵循上述模式的常规测试类。我不知道这是JUnit中的错误还是什么,但如果有人有解决方法/解决方法,那将会很有帮助。

    由于跳过了测试类,此问题也影响了我的Sonar覆盖率。

0 个答案:

没有答案