maven单元测试报错java.lang.Exception: No runnable methods

本文详细介绍了在使用Maven进行单元测试时遇到的'Norunnablemethods'错误及其解决方法。通过调整MyEclipse的错误级别设置,将错误级别从Error改为Warning,可以有效解决该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用maven单元测试时报错:
java.lang.Exception: No runnable methods
at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:157)
at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:102)
at org.junit.runners.ParentRunner.validate(ParentRunner.java:336)
at org.junit.runners.ParentRunner.(ParentRunner.java:74)
at org.junit.runners.BlockJUnit4ClassRunner.(BlockJUnit4ClassRunner.java:56)
at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
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)
解决方法:
在myeclipse中设置如下:

在这里插入图片描述
原来是error改成warring即可;

亲测有效

testsuite显示No runnable methods 代码是package com.huawei.testsuite; import com.huawei.hr.HRTest; import org.junit.runner.RunWith; import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({HRTest.class}) public class CoreTestSuite { } package com.huawei.hr; import org.junit.jupiter.api.*; import org.springframework.http.*; import org.springframework.web.client.RestTemplate; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.web.util.UriComponentsBuilder; import java.net.URI; import java.util.*; public class HRTest { private static final RestTemplate restTemplate = new RestTemplate(); private static final ObjectMapper objectMapper = new ObjectMapper(); private static String cachedToken; @BeforeEach public void setup() throws Exception { if (cachedToken == null) { System.out.println("111111111111111111111111111111111111111111"); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); Map<String, Object> tokenBody = new LinkedHashMap<>(); Map<String, Object> data = new LinkedHashMap<>(); Map<String, Object> attributes = new LinkedHashMap<>(); attributes.put("method", "CREATE"); attributes.put("account", "ac2fc6fabc6c412794ecc4bf41be594b"); attributes.put("secret", "4gSs7b+5yNLMGumoAwtGl01XG++Daj0HDSmjb+Eu"); attributes.put("project", "ac2fc6fabc6c412794ecc4bf41be594b"); attributes.put("enterprise", "872c89429184e5d30191eeb3fa35049d"); data.put("type", "token"); data.put("attributes", attributes); tokenBody.put("data", data); HttpEntity<Map<String, Object>> request = new HttpEntity<>(tokenBody, headers); ResponseEntity<String> response = restTemplate.postForEntity( "https://apig.hieds.net/api/iam/auth/token", request, String.class ); Map<String, Object> responseMap = parseJson(response.getBody()); cachedToken = responseMap.get("access_token").toString(); } } // JSON 解析辅助方法 private Map<String, Object> parseJson(String json) { try { return objectMapper.readValue(json, Map.class); } catch (Exception e) { throw new RuntimeException("JSON 解析失败: " + e.getMessage()); } } @Test public void testHrDepartmentServlet() { // 1. 准备请求 HttpHeaders headers = new HttpHeaders(); headers.set("Authorization", cachedToken); headers.setContentType(MediaType.APPLICATION_JSON); String uri = UriComponentsBuilder.fromUri(URI.create("http://apigp.hieds.net/api/ws/soaservices/HRDepartmentServlet")) .queryParam("code", "069144") .queryParam("lang", "zh") .build() .toUriString(); HttpEntity<Object> entity = new HttpEntity<>(headers); ResponseEntity<String> response = restTemplate.exchange( uri, HttpMethod.GET, entity, String.class ); Map<String, Object> responseJson = parseJson(response.getBody()); Assertions.assertEquals(200, responseJson.get("code")); List<Map<String, Object>> dataList = (List<Map<String, Object>>) responseJson.get("data"); Map<String, Object> firstItem = dataList.get(0); Assertions.assertEquals("0001", firstItem.get("region_Code")); Assertions.assertEquals("069144", firstItem.get("l2_Dept_Code")); } @Test public void testGetDeptList() { HttpHeaders headers = new HttpHeaders(); headers.set("Authorization", cachedToken); headers.setContentType(MediaType.APPLICATION_JSON); String uri = UriComponentsBuilder.fromUri(URI.create("http://apigp.hieds.net/api/f/idata/hr/getDeptList")) .queryParam("lang", "zh") .build() .toUriString(); HttpEntity<Object> entity = new HttpEntity<>(headers); ResponseEntity<String> response = restTemplate.exchange( uri, HttpMethod.GET, entity, String.class ); Assertions.assertEquals(HttpStatus.OK, response.getStatusCode()); Map<String, Object> responseJson = parseJson(response.getBody()); Assertions.assertEquals("200", responseJson.get("code")); List<Map<String, Object>> dataList = (List<Map<String, Object>>) responseJson.get("data"); Map<String, Object> firstItem = dataList.get(0); Assertions.assertEquals("language", firstItem.get("CHN")); } } 为什么?
07-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值