Java Junit在MongoDB、Springboot教程之后失败

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

我将学习本教程:

仅点1,2,3

我需要在我的mongoDB数据库中插入并检查新的寄存器

这是我的pom:

<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
        } 
}