运行JUnit测试时,它给出了一个initializationError:找不到匹配的测试。像这样:
prodapi-main-junit
initializationError(org.junit.runner.manipulation.Filter)
java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=testCreateSite], {ExactMatcher:fDisplayName=testCreateSite(com.company.product.api.web.rest.HostControllerTest)], {LeadingIdentifierMatcher:fClassName=com.company.product.api.web.rest.HostControllerTest,fLeadingIdentifier=testCreateSite]] from org.junit.internal.requests.ClassRequest@3c0f93f1
at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:40)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:77)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:68)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
测试代码如下:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = ProductApplication.class)
@WebAppConfiguration
public class HostControllerTest{
@Test
public void testCreateSite() throws Exception {
......
}
}
加载类,运行良好应该没问题。还有与此类似的其他模块,它们可以正常运行。
我检查了可能的原因:
我不知道是否有任何其他可能的事情可以像这样得到Junit测试错误。也许我应该检查类加载器?
答案 0 :(得分:3)
initializationError(com.company.product.api.web.rest.HostControllerTest)
java.lang.Exception: Method testSetDBConfiguration should have no parameters
at org.junit.runners.model.FrameworkMethod.validatePublicVoidNoArg(FrameworkMethod.java:76)
at org.junit.runners.ParentRunner.validatePublicVoidNoArgMethods(ParentRunner.java:155)
3.根据上面eclipse给出的细节,我删除了该函数的参数,initializedError刚刚消失。
所以这个问题上升是由于新添加的测试功能有不必要的输入参数。 错误的代码:
@Test
public void testSetDBConfiguration(String name) throws Exception {
已更改为
@Test
public void testSetDBConfiguration() throws Exception {
答案 1 :(得分:1)
PowerMock @RunWith(PowerMockRunner.class)
遇到了同样的问题,然后发现我的@Test
是错误的实现。正在使用
import org.junit.jupiter.api.Test
;
我切换到import org.junit.Test;
,这为我解决了这个问题。
答案 2 :(得分:0)
我遇到了类似的问题,后来意识到我的主要spring boot应用程序配置没有扫描其中包含我的测试类的软件包。
主要类别是扫描软件包-{“ com.mycmp.prj.pkg1”,“ com.mycmp.prj.pkg2”,“ com.mycmp.dependentprj.pkg5”}
测试类位于软件包-com.mycmp.prj.pkg3
通过修复基本软件包以扫描当前项目中的所有软件包并仅扫描依赖库中所需的有限软件包来解决问题
@SpringBootApplication(scanBasePackages = {“ com.mycmp.prj.pkg1”,“ com.mycmp.prj.pkg2”,“ com.mycmp.dependentprj.pkg5”}) 公共类MyApplication扩展了SpringBootServletInitializer {
public static void main(final String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(final SpringApplicationBuilder application) {
return application.sources(MyApplication.class);
}
@Bean
public FilterRegistrationBean<Filter> customFilters() {
final FilterRegistrationBean<Filter> registration = new
FilterRegistrationBean<>();
final Filter myFilter = new ServicesFilter();
registration.setFilter(myFilter);
registration.addUrlPatterns("/myurl1/*", "/myurl2/*");
return registration;
}
@PostConstruct
public void started() {
//
}
}
**package com.mycmp.prj.pkg3;**
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.mongodb.MongoClient;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MyApplication.class)
public class MongoConfigStoreTest {
@Test
public void testConnection() throws Exception {
final MongoClient client = new MongoClient("localhost", 127027);
assertNotNull(client);
assertNotNull(client.getDatabase("localhost"));
}
}
答案 3 :(得分:0)
我必须将hamcrest-all-1.3.jar
添加到类路径中才能运行单元测试。
junit 4.12
java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=myTest], {ExactMatcher:fDisplayName=scannerTest(example.JavaTest)], {LeadingIdentifierMatcher:fClassName=example.JavaTest,fLeadingIdentifier=myTest]] from org.junit.internal.requests.ClassRequest@38af3868
at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:40)
答案 4 :(得分:0)
检查以下条件:
public void test(String arg){
assertTrue(true);
}
mvn全新安装
答案 5 :(得分:0)
我找到了以下对我有用的解决方案。
您的应用程序@SpringBootApplication程序包名称 和测试包名称应该相同。
查看是否有帮助。 编码愉快。
答案 6 :(得分:0)
如果这是一个Maven项目,请以eclipse:eclipse作为Maven版本运行。这解决了我的问题。
答案 7 :(得分:0)
首先能够确保带有@test注释的方法以及测试类是公开的。