簡體   English   中英

為什么我會得到 java.lang.Exception: No runnable methods 異常在這個測試類中?

[英]Why do I get a java.lang.Exception: No runnable methods exception in this test class?

我已經實現了以下測試類來測試我已經實現的 REST api 的服務類。 這是我的ExpertsServiceTest.java類的樣子:

package demo;

import lombok.RequiredArgsConstructor;
import org.bson.types.ObjectId;
import org.junit.After;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.List;

import static org.junit.jupiter.api.Assertions.assertEquals;

@RunWith(SpringRunner.class)
@RequiredArgsConstructor
public class ExpertServiceTest {


    @MockBean
    private  ExpertRepository repository;

    @Autowired
    private ExpertsServiceImpl service = new ExpertsServiceImpl(repository);


    Experts demoExpert = new Experts(ObjectId.get(),"Steve Jobs", "Enterpreneur",
            Availability.BUSY, Language.CHINESE);



    @Before
    public void setUp() throws Exception{
        ExpertsServiceImpl service = new ExpertsServiceImpl(repository);
        service.deleteAll();
        service.createExpert(demoExpert);

    }

    @After
    public void tearDown() throws Exception{
        service.deleteAll();
    }


    public void testCreateExpert(){
        Experts expert = new Experts(ObjectId.get(),"Andrea Test", "Software Engineer",
                Availability.BUSY, Language.CHINESE);

        service.createExpert(expert);

        List<Experts> experts = repository.findAll();
        assertEquals(2, experts.size());

    }


}

但是,當我運行測試時,出現以下錯誤:

/usr/lib/jvm/jdk-11.0.6/bin/java -ea -Didea.test.cyclic.buffer.size=1048576 -javaagent:/opt/idea/lib/idea_rt.jar=43811:/opt/idea/bin -Dfile.encoding=UTF-8 -classpath /opt/idea/lib/idea_rt.jar:/opt/idea/plugins/junit/lib/junit5-rt.jar:/opt/idea/plugins/junit/lib/junit-rt.jar:/home/andrea/Documents/repos/temp/demo_api/target/test-classes:/home/andrea/Documents/repos/temp/demo_api/target/classes:/home/andrea/.m2/repository/org/springframework/boot/spring-boot-starter-data-jpa/2.2.4.RELEASE/spring-boot-starter-data-jpa-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/boot/spring-boot-starter-aop/2.2.4.RELEASE/spring-boot-starter-aop-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/spring-aop/5.2.3.RELEASE/spring-aop-5.2.3.RELEASE.jar:/home/andrea/.m2/repository/org/aspectj/aspectjweaver/1.9.5/aspectjweaver-1.9.5.jar:/home/andrea/.m2/repository/org/springframework/boot/spring-boot-starter-jdbc/2.2.4.RELEASE/spring-boot-starter-jdbc-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/com/zaxxer/HikariCP/3.4.2/HikariCP-3.4.2.jar:/home/andrea/.m2/repository/org/springframework/spring-jdbc/5.2.3.RELEASE/spring-jdbc-5.2.3.RELEASE.jar:/home/andrea/.m2/repository/jakarta/activation/jakarta.activation-api/1.2.1/jakarta.activation-api-1.2.1.jar:/home/andrea/.m2/repository/jakarta/persistence/jakarta.persistence-api/2.2.3/jakarta.persistence-api-2.2.3.jar:/home/andrea/.m2/repository/jakarta/transaction/jakarta.transaction-api/1.3.3/jakarta.transaction-api-1.3.3.jar:/home/andrea/.m2/repository/org/hibernate/hibernate-core/5.4.10.Final/hibernate-core-5.4.10.Final.jar:/home/andrea/.m2/repository/org/jboss/logging/jboss-logging/3.4.1.Final/jboss-logging-3.4.1.Final.jar:/home/andrea/.m2/repository/org/javassist/javassist/3.24.0-GA/javassist-3.24.0-GA.jar:/home/andrea/.m2/repository/net/bytebuddy/byte-buddy/1.10.6/byte-buddy-1.10.6.jar:/home/andrea/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar:/home/andrea/.m2/repository/org/jboss/jandex/2.1.1.Final/jandex-2.1.1.Final.jar:/home/andrea/.m2/repository/com/fasterxml/classmate/1.5.1/classmate-1.5.1.jar:/home/andrea/.m2/repository/org/dom4j/dom4j/2.1.1/dom4j-2.1.1.jar:/home/andrea/.m2/repository/org/hibernate/common/hibernate-commons-annotations/5.1.0.Final/hibernate-commons-annotations-5.1.0.Final.jar:/home/andrea/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/jaxb-runtime-2.3.2.jar:/home/andrea/.m2/repository/org/glassfish/jaxb/txw2/2.3.2/txw2-2.3.2.jar:/home/andrea/.m2/repository/com/sun/istack/istack-commons-runtime/3.0.8/istack-commons-runtime-3.0.8.jar:/home/andrea/.m2/repository/org/jvnet/staxex/stax-ex/1.8.1/stax-ex-1.8.1.jar:/home/andrea/.m2/repository/com/sun/xml/fastinfoset/FastInfoset/1.2.16/FastInfoset-1.2.16.jar:/home/andrea/.m2/repository/org/springframework/data/spring-data-jpa/2.2.4.RELEASE/spring-data-jpa-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/data/spring-data-commons/2.2.4.RELEASE/spring-data-commons-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/spring-orm/5.2.3.RELEASE/spring-orm-5.2.3.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/spring-context/5.2.3.RELEASE/spring-context-5.2.3.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/spring-tx/5.2.3.RELEASE/spring-tx-5.2.3.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/spring-beans/5.2.3.RELEASE/spring-beans-5.2.3.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/spring-aspects/5.2.3.RELEASE/spring-aspects-5.2.3.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/boot/spring-boot-starter-hateoas/2.2.4.RELEASE/spring-boot-starter-hateoas-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/hateoas/spring-hateoas/1.0.3.RELEASE/spring-hateoas-1.0.3.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/plugin/spring-plugin-core/2.0.0.RELEASE/spring-plugin-core-2.0.0.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/boot/spring-boot-starter-web/2.2.4.RELEASE/spring-boot-starter-web-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/boot/spring-boot-starter/2.2.4.RELEASE/spring-boot-starter-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/boot/spring-boot/2.2.4.RELEASE/spring-boot-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/2.2.4.RELEASE/spring-boot-autoconfigure-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/boot/spring-boot-starter-logging/2.2.4.RELEASE/spring-boot-starter-logging-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar:/home/andrea/.m2/repository/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar:/home/andrea/.m2/repository/org/apache/logging/log4j/log4j-to-slf4j/2.12.1/log4j-to-slf4j-2.12.1.jar:/home/andrea/.m2/repository/org/apache/logging/log4j/log4j-api/2.12.1/log4j-api-2.12.1.jar:/home/andrea/.m2/repository/org/slf4j/jul-to-slf4j/1.7.30/jul-to-slf4j-1.7.30.jar:/home/andrea/.m2/repository/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar:/home/andrea/.m2/repository/org/yaml/snakeyaml/1.25/snakeyaml-1.25.jar:/home/andrea/.m2/repository/org/springframework/boot/spring-boot-starter-json/2.2.4.RELEASE/spring-boot-starter-json-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.10.2/jackson-databind-2.10.2.jar:/home/andrea/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.10.2/jackson-annotations-2.10.2.jar:/home/andrea/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.10.2/jackson-datatype-jdk8-2.10.2.jar:/home/andrea/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.10.2/jackson-datatype-jsr310-2.10.2.jar:/home/andrea/.m2/repository/com/fasterxml/jackson/module/jackson-module-parameter-names/2.10.2/jackson-module-parameter-names-2.10.2.jar:/home/andrea/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/2.2.4.RELEASE/spring-boot-starter-tomcat-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.30/tomcat-embed-core-9.0.30.jar:/home/andrea/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/9.0.30/tomcat-embed-el-9.0.30.jar:/home/andrea/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/9.0.30/tomcat-embed-websocket-9.0.30.jar:/home/andrea/.m2/repository/org/springframework/boot/spring-boot-starter-validation/2.2.4.RELEASE/spring-boot-starter-validation-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/jakarta/validation/jakarta.validation-api/2.0.2/jakarta.validation-api-2.0.2.jar:/home/andrea/.m2/repository/org/hibernate/validator/hibernate-validator/6.0.18.Final/hibernate-validator-6.0.18.Final.jar:/home/andrea/.m2/repository/org/springframework/spring-web/5.2.3.RELEASE/spring-web-5.2.3.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/spring-webmvc/5.2.3.RELEASE/spring-webmvc-5.2.3.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/spring-expression/5.2.3.RELEASE/spring-expression-5.2.3.RELEASE.jar:/home/andrea/.m2/repository/com/h2database/h2/1.4.200/h2-1.4.200.jar:/home/andrea/.m2/repository/org/springframework/boot/spring-boot-starter-data-mongodb/2.2.4.RELEASE/spring-boot-starter-data-mongodb-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/org/mongodb/mongodb-driver/3.11.2/mongodb-driver-3.11.2.jar:/home/andrea/.m2/repository/org/mongodb/bson/3.11.2/bson-3.11.2.jar:/home/andrea/.m2/repository/org/mongodb/mongodb-driver-core/3.11.2/mongodb-driver-core-3.11.2.jar:/home/andrea/.m2/repository/org/springframework/data/spring-data-mongodb/2.2.4.RELEASE/spring-data-mongodb-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/boot/spring-boot-starter-test/2.2.4.RELEASE/spring-boot-starter-test-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/boot/spring-boot-test/2.2.4.RELEASE/spring-boot-test-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/boot/spring-boot-test-autoconfigure/2.2.4.RELEASE/spring-boot-test-autoconfigure-2.2.4.RELEASE.jar:/home/andrea/.m2/repository/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0.jar:/home/andrea/.m2/repository/net/minidev/json-smart/2.3/json-smart-2.3.jar:/home/andrea/.m2/repository/net/minidev/accessors-smart/1.2/accessors-smart-1.2.jar:/home/andrea/.m2/repository/org/ow2/asm/asm/5.0.4/asm-5.0.4.jar:/home/andrea/.m2/repository/jakarta/xml/bind/jakarta.xml.bind-api/2.3.2/jakarta.xml.bind-api-2.3.2.jar:/home/andrea/.m2/repository/org/junit/jupiter/junit-jupiter/5.5.2/junit-jupiter-5.5.2.jar:/home/andrea/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.5.2/junit-jupiter-api-5.5.2.jar:/home/andrea/.m2/repository/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar:/home/andrea/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/home/andrea/.m2/repository/org/junit/platform/junit-platform-commons/1.5.2/junit-platform-commons-1.5.2.jar:/home/andrea/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.5.2/junit-jupiter-params-5.5.2.jar:/home/andrea/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.5.2/junit-jupiter-engine-5.5.2.jar:/home/andrea/.m2/repository/org/junit/platform/junit-platform-engine/1.5.2/junit-platform-engine-1.5.2.jar:/home/andrea/.m2/repository/org/mockito/mockito-junit-jupiter/3.1.0/mockito-junit-jupiter-3.1.0.jar:/home/andrea/.m2/repository/org/assertj/assertj-core/3.13.2/assertj-core-3.13.2.jar:/home/andrea/.m2/repository/org/hamcrest/hamcrest/2.1/hamcrest-2.1.jar:/home/andrea/.m2/repository/org/mockito/mockito-core/3.1.0/mockito-core-3.1.0.jar:/home/andrea/.m2/repository/net/bytebuddy/byte-buddy-agent/1.10.6/byte-buddy-agent-1.10.6.jar:/home/andrea/.m2/repository/org/objenesis/objenesis/2.6/objenesis-2.6.jar:/home/andrea/.m2/repository/org/skyscreamer/jsonassert/1.5.0/jsonassert-1.5.0.jar:/home/andrea/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar:/home/andrea/.m2/repository/org/springframework/spring-core/5.2.3.RELEASE/spring-core-5.2.3.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/spring-jcl/5.2.3.RELEASE/spring-jcl-5.2.3.RELEASE.jar:/home/andrea/.m2/repository/org/springframework/spring-test/5.2.3.RELEASE/spring-test-5.2.3.RELEASE.jar:/home/andrea/.m2/repository/org/xmlunit/xmlunit-core/2.6.3/xmlunit-core-2.6.3.jar:/home/andrea/.m2/repository/com/github/fakemongo/fongo/2.2.0-RC2/fongo-2.2.0-RC2.jar:/home/andrea/.m2/repository/org/mozilla/rhino/1.7.7.1/rhino-1.7.7.1.jar:/home/andrea/.m2/repository/com/vividsolutions/jts/1.13/jts-1.13.jar:/home/andrea/.m2/repository/de/grundid/opendatalab/geojson-jackson/1.2/geojson-jackson-1.2.jar:/home/andrea/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.10.2/jackson-core-2.10.2.jar:/home/andrea/.m2/repository/com/lordofthejars/nosqlunit-mongodb/0.7.6/nosqlunit-mongodb-0.7.6.jar:/home/andrea/.m2/repository/com/lordofthejars/nosqlunit-core/0.7.6/nosqlunit-core-0.7.6.jar:/home/andrea/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar:/home/andrea/.m2/repository/com/googlecode/lambdaj/lambdaj/2.3.3/lambdaj-2.3.3.jar:/home/andrea/.m2/repository/cglib/cglib-nodep/2.2/cglib-nodep-2.2.jar:/home/andrea/.m2/repository/org/jooq/joor/0.9.3/joor-0.9.3.jar:/home/andrea/.m2/repository/org/codehaus/jackson/jackson-mapper-asl/1.8.8/jackson-mapper-asl-1.8.8.jar:/home/andrea/.m2/repository/org/codehaus/jackson/jackson-core-asl/1.8.8/jackson-core-asl-1.8.8.jar:/home/andrea/.m2/repository/org/mongodb/mongo-java-driver/3.11.2/mongo-java-driver-3.11.2.jar:/home/andrea/.m2/repository/com/foursquare/fongo/1.0.7/fongo-1.0.7.jar:/home/andrea/.m2/repository/org/hamcrest/hamcrest-core/2.1/hamcrest-core-2.1.jar:/home/andrea/.m2/repository/org/hamcrest/hamcrest-library/2.1/hamcrest-library-2.1.jar:/home/andrea/.m2/repository/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar:/home/andrea/.m2/repository/org/projectlombok/lombok/1.18.10/lombok-1.18.10.jar:/home/andrea/.m2/repository/de/flapdoodle/embed/de.flapdoodle.embed.mongo/2.2.0/de.flapdoodle.embed.mongo-2.2.0.jar:/home/andrea/.m2/repository/de/flapdoodle/embed/de.flapdoodle.embed.process/2.1.2/de.flapdoodle.embed.process-2.1.2.jar:/home/andrea/.m2/repository/org/apache/commons/commons-lang3/3.9/commons-lang3-3.9.jar:/home/andrea/.m2/repository/net/java/dev/jna/jna/4.5.2/jna-4.5.2.jar:/home/andrea/.m2/repository/net/java/dev/jna/jna-platform/4.5.2/jna-platform-4.5.2.jar:/home/andrea/.m2/repository/org/apache/commons/commons-compress/1.18/commons-compress-1.18.jar:/home/andrea/.m2/repository/junit/junit/4.12/junit-4.12.jar com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit4 demo.ExpertServiceTest,testCreateExpert

java.lang.Exception: No runnable methods

    at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:191)
    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.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:137)
    at org.springframework.test.context.junit4.SpringRunner.<init>(SpringRunner.java:49)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
    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.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:36)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:49)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230)
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)


Process finished with exit code 255

有人可以確定為什么會發生這種情況嗎? 我真的不明白如何解決這個問題,因為我是 Spring Boot 的新手。 在此先感謝您的幫助

您的方法中缺少 @Test 注釋。

在我看來,最簡單的解決方法是添加相同的內容,如下所述。

@Test
public void testCreateExpert(){
        Experts expert = new Experts(ObjectId.get(),"Andrea Test", "Software Engineer",
                Availability.BUSY, Language.CHINESE);

        service.createExpert(expert);

        List<Experts> experts = repository.findAll();
        assertEquals(2, experts.size());

    }

將 @Test 注釋放在 testCreateExpert() 方法上。

使用test前綴測試方法是 JUnit 3.x 的實踐。 由於您似乎在使用 JUnit 4.x,因此您不再需要它。 但是,您必須使用@Test注釋您的測試方法:

Test注釋告訴 JUnit,它所附加的 public void 方法可以作為測試用例運行。 為了運行該方法,JUnit 首先構造該類的一個新實例,然后調用帶注釋的方法。

因此,您將擁有以下內容:

@Test
public void testCreateExpert() {
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM