Java Junit在MongoDB、Springboot教程之后失败
我将学习本教程: 仅点1,2,3 我需要在我的mongoDB数据库中插入并检查新的寄存器 这是我的pom:Java Junit在MongoDB、Springboot教程之后失败,java,mongodb,junit,Java,Mongodb,Junit,我将学习本教程: 仅点1,2,3 我需要在我的mongoDB数据库中插入并检查新的寄存器 这是我的pom: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>2.1.1.RELEASE</version><!--$NO-MVN-MAN-VER$ -->
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
org.springframework.boot
弹簧靴起动器
org.springframework.boot
spring启动程序日志记录
org.springframework.boot
弹簧起动试验
测试
org.springframework.data
spring数据mongodb
2.1.1.1发布
org.projectlombok
龙目
真的
org.springframework.boot
spring-boot-starter-log4j2
de.flapdoodle.embed
de.flapdoodle.embed.mongo
测试
这是我的test.java:
import static org.assertj.core.api.Assertions.assertThat;
import java.util.List;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import com.batch.DesarrolloBatch.model.Documento;
import com.mongodb.BasicDBObjectBuilder;
import com.mongodb.DBObject;
@DataMongoTest
public class TestApplicationConfiguration {
@Test
public void test(@Autowired MongoTemplate mongoTemplate) {
// given
DBObject objectToSave = BasicDBObjectBuilder.start()
.add("_id", "999999999999")
.get();
// when
mongoTemplate.save(objectToSave, "collection");
List<Documento> list = mongoTemplate.findAll(Documento.class, "collection");
System.out.println("size " + list.size());
// then
assertThat(mongoTemplate.findAll(Documento.class, "collection")).extracting("_id")
.containsOnly("999999999999");
}
}
import static org.assertj.core.api.Assertions.assertThat;
导入java.util.List;
导入org.junit.Test;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
导入org.springframework.data.mongodb.core.MongoTemplate;
导入com.batch.desarrolobatch.model.Documento;
导入com.mongodb.basicdbobobjectbuilder;
导入com.mongodb.DBObject;
@DataMongoTest
公共类测试应用程序配置{
@试验
公共无效测试(@Autowired MongoTemplate MongoTemplate){
//给定
DBObject objectToSave=BasicDBObjectBuilder.start()
.添加(“_id”,“9999999999”)
.get();
//什么时候
save(objectToSave,“collection”);
List List=mongoTemplate.findAll(Documento.class,“collection”);
System.out.println(“size”+list.size());
//然后
资产(mongoTemplate.findAll(Documento.class,“collection”)。提取(“\u id”)
.仅包含(“9999999999”);
}
}
我正在尝试插入一个属性为_idvalue=9999999的新文档
但是这段代码失败了,所以,我正在尝试查看列表的大小,以了解我是否插入成功
我得到这个错误:
java.lang.Exception: Method test should have no parameters
at org.junit.runners.model.FrameworkMethod.validatePublicVoidNoArg(FrameworkMethod.java:76)
at org.junit.runners.ParentRunner.validatePublicVoidNoArgMethods(ParentRunner.java:155)
at org.junit.runners.BlockJUnit4ClassRunner.validateTestMethods(BlockJUnit4ClassRunner.java:208)
at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:188)
at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:128)
at org.junit.runners.ParentRunner.validate(ParentRunner.java:416)
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:84)
at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:65)
at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:87)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:73)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:46)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:522)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
java.lang.Exception:方法测试应该没有参数
位于org.junit.runners.model.FrameworkMethod.validatePublicVoidNoArg(FrameworkMethod.java:76)
位于org.junit.runners.ParentRunner.validatePublicVoidNoArgMethods(ParentRunner.java:155)
位于org.junit.runners.BlockJUnit4ClassRunner.validateTestMethods(BlockJUnit4ClassRunner.java:208)
位于org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:188)
位于org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:128)
位于org.junit.runners.ParentRunner.validate(ParentRunner.java:416)
在org.junit.runners.ParentRunner上(ParentRunner.java:84)
位于org.junit.runners.BlockJUnit4ClassRunner。(BlockJUnit4ClassRunner.java:65)
位于org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10)
位于org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
位于org.junit.internal.builders.AllDefaultPossibilityBuilder.runnerForClass(AllDefaultPossibilityBuilder.java:26)
位于org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
位于org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
位于org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:87)
位于org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:73)
位于org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:46)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:522)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
我是新来的Junit,mongodb。。。我只想使用mongoDB,插入并检查我的bbdd。。。。谢谢…您忘记了类级别上的注释:@extendedwith(SpringExtension.class) 请仔细阅读本教程。 以下是指向GitHub Repo的链接,您可以在其中找到pom.xml和所有源代码:
mongoTemplate不应该是类的字段而不是方法参数吗?对于Junit4,应该使用
RunWith(SpringRunner.class)
对于Junit5,如果版本足够晚,则不需要使用ExtendWith。请遵循教程!这就是pom.xml的样子:Darren,使用RunWith(SpringRunner.class),我有3个错误:java.lang.reflect.Constructor.newInstance(未知源代码),,,,,org.springframework.test.context.junit4.SpringRunner.(SpringRunner.java:49),,,,,,,,atorg.springframework.test.context.junit.4.SpringUnit4ClassRunner.(SpringJUnit4ClassRunner.java:137)
@DataMongoTest
@ExtendWith(SpringExtension.class)
public class TestApplicationConfiguration {
@Test
public void test(@Autowired MongoTemplate mongoTemplate) {
// your test code
}
}