Intellij中setObservationCode报错:未使用与无法解析方法
问题分析与解决方案
问题1:第二个setObservationCode方法提示"never used"
你在ResourceHandlerTest类里写了两个完全相同的setObservationCode(Observation observation, Coding coding)方法,属于重复定义。编译器只会识别其中一个,另一个就会被标记为“从未使用”。
问题2:单元测试调用setObservationCode时提示无法解析方法
你的setObservationCode系列方法都定义在**测试类ResourceHandlerTest**里,但测试代码中却尝试通过ResourceHandler类的实例调用该方法——ResourceHandler类本身根本没有实现这些方法,IDE自然找不到对应的定义。
修复步骤
步骤1:删除重复的方法定义
直接删掉ResourceHandlerTest中重复的那个setObservationCode(Observation, Coding)方法,只保留一个即可。
步骤2:将方法移到ResourceHandler类中
既然测试代码是通过ResourceHandler实例调用方法,就需要把这三个重载的setObservationCode方法从测试类迁移到ResourceHandler类里。
修复后的代码示例:
ResourceHandler.java
public class ResourceHandler { public Observation setObservationCode(Observation observation, Coding coding) { if (observation.getCode() == null) { observation.setCode(new CodeableConcept().addCoding(coding)); } else { observation.getCode().addCoding(coding); } return observation; } public Observation setObservationCode(Observation observation, String system, String code, String display) { System.out.println("Debug: Observation Before - " + observation); System.out.println("Debug: System - " + system); System.out.println("Debug: Code - " + code); System.out.println("Debug: Display - " + display); Coding coding = new Coding().setSystem(system).setCode(code).setDisplay(display); return setObservationCode(observation, coding); } }
ResourceHandlerTest.java
public class ResourceHandlerTest extends TestCase { FhirContext ctx = null; IParser parser = null; // 其他方法... public String getId(Resource resource) { if (resource.getIdElement() != null) { IdType idType = resource.getIdElement(); return idType.getIdPart(); } else { return null; } } public void testSetObservationCode() throws Exception { if (ctx == null) ctx = FhirContext.forR4(); if (parser == null) parser = ctx.newJsonParser(); String observationJsonFile = "src/resources/observation.json"; String observationJson = ""; try { observationJson = new String(Files.readAllBytes(Paths.get(observationJsonFile))); } catch (Exception e) { System.err.println("Failed to read observation.json file."); } Observation correctObservation = parser.parseResource(Observation.class, observationJson); ResourceHandler studentResourceHandler = new ResourceHandler(); String expectedSystem = "http://example.com/system"; String expectedCode = "12345"; String expectedDisplay = "Test Code"; Coding coding = new Coding().setSystem(expectedSystem).setCode(expectedCode).setDisplay(expectedDisplay); Observation modifiedObservation = studentResourceHandler.setObservationCode(correctObservation, coding); assertEquals(expectedSystem, modifiedObservation.getCode().getCodingFirstRep().getSystem()); assertEquals(expectedCode, modifiedObservation.getCode().getCodingFirstRep().getCode()); assertEquals(expectedDisplay, modifiedObservation.getCode().getCodingFirstRep().getDisplay()); } }
额外检查
- 确保
ResourceHandler类和测试类在同一个包下,或者已经正确导入ResourceHandler类。 - 执行项目构建工具的clean命令(比如Maven的
mvn clean或Gradle的./gradlew clean),重新构建项目,避免IDE缓存残留问题。
内容的提问来源于stack exchange,提问作者CourtneySimpson8
相关产品推荐
相关产品推荐

