Intellij 测试通过,mvn 测试失败

ola*_*ven 7 java junit spring-boot

主要问题

我正在开发一个 spring-boot 应用程序。我有测试,有@autowired服务。当我在 IntelliJ 中运行它们时,所有测试都通过了。但是,当我从命令行运行时mvn test,会抛出空指针异常。

非常感谢任何帮助!

奥拉夫

测试示例

@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = Application.class,
        webEnvironment = SpringBootTest.WebEnvironment.NONE)
public class CategoryServiceTest extends ServiceTestBase {

    @Autowired
    private CategoryService categoryService;


    @Test
    public void testNoCategory() {
        List<Category> categories = categoryService.getAllCategories(false);
        assertEquals(0, categories.size());
    }
    //...
}
Run Code Online (Sandbox Code Playgroud)

应用类

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

命令行中的输出(使用服务的每个测试一个)

org.olaven.quizgame.services.QuizServiceTest.testQuizWithoutSubCategoryFails()  Time elapsed: 0 sec  <<< FAILURE!
java.lang.NullPointerException
    at org.olaven.quizgame.services.QuizServiceTest.testQuizWithoutSubCategoryFails(QuizServiceTest.java:219)
Run Code Online (Sandbox Code Playgroud)

QuizServiceTest.java 第 217-220 行

org.olaven.quizgame.services.QuizServiceTest.testQuizWithoutSubCategoryFails()  Time elapsed: 0 sec  <<< FAILURE!
java.lang.NullPointerException
    at org.olaven.quizgame.services.QuizServiceTest.testQuizWithoutSubCategoryFails(QuizServiceTest.java:219)
Run Code Online (Sandbox Code Playgroud)

POM文件

Long categoryId = categoryService.createCategory(getRandomString(10));
Long subCategoryId = categoryService.createSubCategory(categoryId, getRandomString(10));
Long quizId = quizService.createQuiz(subCategoryId, getRandomString(10), "1", "2", "3", "4", 0);
Run Code Online (Sandbox Code Playgroud)

ams*_*ger 8

尝试将较新的maven-surefire-plugin版本添加到您的 pom.xml 中:

<build>
     <plugins>
         ....
         <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-surefire-plugin</artifactId>
             <version>2.22.0</version>
         </plugin>
         ....
     </plugins>
 </build>
Run Code Online (Sandbox Code Playgroud)

  • 自 2.22 版本起,maven Surefire 插件支持 @Gautam Junit 4 测试。请参阅 https://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven 和 https://issues.apache.org/jira/browse/SUREFIRE-1330 (2认同)