@Autowired public PlugsModel(Environment env) throws Exception { // public PlugsModel(Environment env) throws Exception { this.broker=env.getProperty("mqtt.broker"); this.clientId=env.getProperty("mqtt.client"); this.topicPrefix=(String)env.getProperty("mqtt.topicPrefix"); } synchronized protected void handleUpdate(String topic, MqttMessage msg){ logger.info(">>> handleUpdate: {} {}", topic, msg); String[] nameUpdate=topic.substring(topicPrefix.length()+1).split("/"); if ((nameUpdate.length!=3)||!nameUpdate[0].equals("update")){ return; //ignore unknown format }; logger.info(">>> handleUpdate {} {}", nameUpdate[1], nameUpdate[2]); switch(nameUpdate[2]){ case "state": states.put(nameUpdate[1], msg.toString()); break; case "power": powers.put(nameUpdate[1], msg.toString()); default: return; } }这个的testcase怎么写
时间: 2023-05-30 14:07:38 浏览: 138
这个类的测试用例可以按照以下步骤进行编写:
1. 创建一个 Mock Environment 对象,设置需要的属性值,例如:
```
MockEnvironment env = new MockEnvironment();
env.setProperty("mqtt.broker", "tcp://localhost:1883");
env.setProperty("mqtt.client", "test-client");
env.setProperty("mqtt.topicPrefix", "test-prefix");
```
2. 创建一个 PlugsModel 对象,注入 Mock Environment 对象,例如:
```
PlugsModel model = new PlugsModel(env);
```
3. 调用 PlugsModel 对象的 handleUpdate 方法,模拟消息的到达,例如:
```
MqttMessage msg = new MqttMessage("on".getBytes());
model.handleUpdate("test-prefix/update/1/state", msg);
```
4. 验证 PlugsModel 对象的状态是否符合预期,例如:
```
assertEquals("on", model.states.get("1"));
```
5. 再次调用 PlugsModel 对象的 handleUpdate 方法,模拟另一个消息的到达,例如:
```
MqttMessage msg2 = new MqttMessage("100".getBytes());
model.handleUpdate("test-prefix/update/1/power", msg2);
```
6. 再次验证 PlugsModel 对象的状态是否符合预期,例如:
```
assertEquals("100", model.powers.get("1"));
```
7. 编写其他需要测试的场景,例如异常情况下的处理等。
阅读全文