最近我開始研究演示 Spring Boot 應用程式,但在啟動應用程式時無法運行單元測驗。這種方法的目的是我們需要在啟動應用程式之前運行所有單元測驗。
示例演示應用程式的代碼如下。
主類DemoApplication,
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
示范班學校,
package com.example.demo;
import org.springframework.stereotype.Component;
@Component
public class School {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
主類單元測驗,
package com.example.demo;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
class DemoApplicationTests {
@Autowired
private School school;
@Test
void contextLoads() {
school.setName("test");
String schoolName = school.getName();
Assertions.assertThat(schoolName).isNotNull();
}
@Test
void main() {
DemoApplication.main(new String[]{});
school.setName("test");
String schoolName = school.getName();
Assertions.assertThat(schoolName).isNotNull();
}
}
學校單元測驗,
package com.example.demo;
import org.junit.Assert;
import org.junit.Test;
public class SchoolTests {
@Test
public void getTodoTest() {
School school = new School();
String name = "test";
school.setName(name);
Assert.assertEquals(name, school.getName());
}
}
pom.xml 檔案,
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.6</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
在啟動時運行單元測驗需要做哪些額外的配置?
uj5u.com熱心網友回復:
如果您想通過 Intellij 執行此操作,您可以創建一個運行配置來運行verify和spring-boot:run目標:

正如其他人所說,這是您在開發時只想做的事情。
uj5u.com熱心網友回復:
一些建議:
- 讓我們將您的本地開發和發布、部署程序分開:使用某種 CI/CD 程序
- 你可以構建、運行你的單元測驗和其他靜態代碼分析器是你的 CI 程序(例如在 gitlab-ci 中)
- 在開發應用程式時,您可以在不運行應用程式的情況下運行單元測驗,并且可以在不運行本地計算機上的單元測驗的情況下運行應用程式,這樣效率更高。
- 完成開發問題后,您可以將其推送到可以運行 CI 或 CI/CD 流程的版本控制。如果您在團隊中作業,我建議使用某種分支/版本控制策略,例如 gitflow、基于主干的開發等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/330353.html
