我有一个状态机,它有一组相对较小的状态和输入,我想详尽地测试转换。
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)自动创建测试:对我来说,这似乎是一种更好的方法,但最终使用的结构与状态机中使用的映射相同。我该怎么办?在测试文件中复制映射,还是从实现文件中导入映射?后者会使测试文件依赖于实现,这似乎不是一个好主意
3)相等性测试图,与之前相同的问题:与自身相等还是与副本相等?这种方法基本上就是我对另外两种方法所做的,但看起来不像是一种规范测试
也许你想看看这个:https://www.itemis.com/en/yakindu/state-machine/documentation/user-guide/sctunit_test-driven_statechart_development_with_sctunit
它展示了如何进行基于模型和测试驱动的状态机开发,包括生成单元测试代码和测量测试覆盖率的选项。
我在youtube上按部就班地学习教程,但我没有得到结果。代码如下: 主要应用 或来自Chrome的以下内容: 白标签错误页 此应用程序没有/error的显式映射,因此您将其视为一种后退。
问题 你想实现一个状态机或者是在不同状态下执行操作的对象,但是又不想在代码中出现太多的条件判断语句。 解决方案 在很多程序中,有些对象会根据状态的不同来执行不同的操作。比如考虑如下的一个连接对象: class Connection: """普通方案,好多个判断语句,效率低下~~""" def __init__(self): self.state = 'CLOSED
我有一个简单的Java单模块Gradle项目,其中我使用Mapstruct进行Java映射。我的如下所示: 我的源文件夹包含以下Java源代码:
我一直在研究Jackson,但似乎必须将映射转换为JSON,然后将生成的JSON转换为POJO。 有没有一种方法可以将地图直接转换成POJO?
映射容器端口到宿主主机的实现 默认情况下,容器可以主动访问到外部网络的连接,但是外部网络无法访问到容器。 容器访问外部实现 容器所有到外部网络的连接,源地址都会被 NAT 成本地系统的 IP 地址。这是使用 iptables 的源地址伪装操作实现的。 查看主机的 NAT 规则。 $ sudo iptables -t nat -nL...Chain POSTROUTING (policy ACCEP