gpt4 book ai didi

测试作为 Map 实现的状态机转换

转载 作者:行者123 更新时间:2023-11-28 21:20:50 27 4
gpt4 key购买 nike

我有一个状态机,其中包含相对较少的状态和输入集,我想详尽地测试转换。
使用 Map<State, Map<Input, State>> 对转换进行编码,代码是这样的:

enum State {
S1,
// ...
}

enum Input {
I1,
// ...
}

class StateMachine {
State current;

Map<State, Map<Input, State>> transitions = {
S1: {
I1: S2,
// ...
},
// ...
};

State changeState(Input x) {
if (transitions[current] == null)
throw Error('Unknows state ${current}');
if (transitions[current][x] == null)
throw Error('Unknown transition from state ${current} with input ${x}');

current = transitions[current][x];
return current;
}

void execute() {
// ...
}
}

为了测试它,我看到了 3 种方法:
1) 编写大量样板代码来检查每个组合
2) 自动创建测试:这对我来说似乎是一种更好的方法,但这最终会使用与 StateMachine 中使用的 Map 相同的结构。我应该怎么办?复制测试文件中的Map还是从实现文件中导入?后者会使测试文件依赖于实现,这似乎不是一个好主意。
3) 测试 Map 是否相等,和以前一样的问题:与自身相等还是与副本相等?这种方法基本上是我对其他 2 种方法所做的,但看起来不像是规范测试

最佳答案

也许您想看看这个:https://www.itemis.com/en/yakindu/state-machine/documentation/user-guide/sctunit_test-driven_statechart_development_with_sctunit

它展示了如何进行基于模型和测试驱动的状态机开发,包括生成单元测试代码和测量测试覆盖率的选项。

关于测试作为 Map 实现的状态机转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52128482/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com