C# 功能测试中的检查结果

C# 功能测试中的检查结果,c#,unit-testing,automated-tests,C#,Unit Testing,Automated Tests,我创建了一个与设备通信并向用户提供高级API的库 现在我正在尝试创建功能测试——与真实设备通信的测试 问题:可以使用自己的函数检查结果吗?例如,有GetChannelState()和SetChannelState()方法。我是否可以在“Set”方法的帮助下检查“Get”方法,反之亦然?请描述您在类似情况下使用的方法 示例: 这是示波器。要打开第二个通道,库向示波器发送字符串“选择:CH2 ON”。要检查频道是否打开,它会发送“选择?”,然后解析响应。响应将类似于以下“选择:CH1 1;CH2 1

我创建了一个与设备通信并向用户提供高级API的库

现在我正在尝试创建功能测试——与真实设备通信的测试

问题:可以使用自己的函数检查结果吗?例如,有GetChannelState()和SetChannelState()方法。我是否可以在“Set”方法的帮助下检查“Get”方法,反之亦然?请描述您在类似情况下使用的方法

示例: 这是示波器。要打开第二个通道,库向示波器发送字符串“选择:CH2 ON”。要检查频道是否打开,它会发送
“选择?”
,然后解析响应。响应将类似于以下
“选择:CH1 1;CH2 1;CH3 0;CH4 0”

要设置值,有
SetChannelState(int-channelNumber)
API,要获取值,有
GetChannelState(int-channelNumber)
API


因此,问题是我是否可以使用SetChannelState测试GetChannelState,反之亦然。

当然-只要您完成了一些测试,证明您的集合确实设置了给定的内容(或遵守您希望它设置的规则)。如果您的设置逻辑很简单,那么该逻辑可能没有实际用途,尽管在代码的其余部分依赖于此位之前,必须测试不断增长的复杂性

然而,也有一些边缘情况。您可能想用一个伪逻辑来模拟您的集合逻辑,并确保它确实被调用了,比如说,只调用了一次。这同样适用于get和set行为。这些是独立的,不应该依赖于现实世界的实现

完成后,您可以完全信任自己的代码,并毫无疑问地在功能测试中使用它