You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 16:02:05