Spring Boot 2 找不到@Test(expected = xxx)
Spring Boot 2 can't find @Test(expected = xxx)
java 1.8
在我的 Spring Boot 2 项目中:
build.gradle:
dependencies {
implementation 'com.google.code.gson:gson:2.7'
implementation 'com.h2database:h2'
implementation 'javax.servlet:jstl:1.2'
implementation 'org.springframework.boot:spring-boot-devtools'
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
testImplementation 'junit:junit:4.4'
}
test {
useJUnitPlatform()
}
在我的测试中:
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class CategoryTest {
@Autowired
private CategoryRepository categoryRepository;
@Test
public void myTest() {
categoryRepository.save(new Category());
}
@Test(expected = javax.validation.ConstraintViolationException.class)
public void shouldNotAllowToPersistNullProperies() {
categoryRepository.save(new Category());
}
}
测试 myTest()
成功,但我在测试 shouldNotAllowToPersistNullProperies()
:
中遇到编译错误
error: cannot find symbol
@Test(expected = javax.validation.ConstraintViolationException.class)
^
symbol: method expected()
location: @interface Test
您可以使用 JUnit 5 而不是 JUnit 4。
删除:
testImplementation 'junit:junit:4.4'
JUnit 5 不知道 "expected" 而是像这样使用 assertThrows:
@Test
public void shouldNotAllowToPersistNullProperies() {
Assertions.assertThrows(ConstraintViolationException.class, () -> {
categoryRepository.save(new Category());
});
}
java 1.8
在我的 Spring Boot 2 项目中:
build.gradle:
dependencies {
implementation 'com.google.code.gson:gson:2.7'
implementation 'com.h2database:h2'
implementation 'javax.servlet:jstl:1.2'
implementation 'org.springframework.boot:spring-boot-devtools'
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
testImplementation 'junit:junit:4.4'
}
test {
useJUnitPlatform()
}
在我的测试中:
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class CategoryTest {
@Autowired
private CategoryRepository categoryRepository;
@Test
public void myTest() {
categoryRepository.save(new Category());
}
@Test(expected = javax.validation.ConstraintViolationException.class)
public void shouldNotAllowToPersistNullProperies() {
categoryRepository.save(new Category());
}
}
测试 myTest()
成功,但我在测试 shouldNotAllowToPersistNullProperies()
:
error: cannot find symbol
@Test(expected = javax.validation.ConstraintViolationException.class)
^
symbol: method expected()
location: @interface Test
您可以使用 JUnit 5 而不是 JUnit 4。
删除:
testImplementation 'junit:junit:4.4'
JUnit 5 不知道 "expected" 而是像这样使用 assertThrows:
@Test
public void shouldNotAllowToPersistNullProperies() {
Assertions.assertThrows(ConstraintViolationException.class, () -> {
categoryRepository.save(new Category());
});
}