什么是用于单元测试的好的无效IP地址?

时间:2012-05-04 20:57:06

标签: unit-testing tcp ip

我正在为客户端库编写单元测试。我想测试连接无效端口和无效的IP。什么是一个好的IP地址使用,不会在某个地方路由?我不想对运行单元测试的机器所在的网络做出任何假设。 LOCALHOST似乎是一个糟糕的选择,因为这是运行服务器组件的有效机器,我想分别测试无效端口。是否在IPv4规范中的某处保留了INVALID-IP?

5 个答案:

答案 0 :(得分:45)

根据RFC 5737

  

块192.0.2.0/24(TEST-NET-1),198.51.100.0 / 24(TEST-NET-2),   提供了203.0.113.0/24(TEST-NET-3)用于文档。

这意味着您可以使用以下范围内的IP地址:

  • 192.0.2.0 - 192.0.2.255
  • 198.51.100.0 - 198.51.100.255
  • 203.0.113.0 - 203.0.113.255

答案 1 :(得分:11)

如果您正在寻找真正无效的IP地址(而不是无法接收的IP地址),您可以利用Class A地址的第一个字节不能为0这一事实。

例如:

0.42.42.42

答案 2 :(得分:2)

您可以使用3个私有IP块进行此类操作:

10/8(10.0.0.0 - > 10.255.255.255)(旧学校A级网块)

172.16 / 12(172.16.0.0 - > 172.131.255.255

196.168 / 16(192.168.0.0 - > 192.168.255.255)(旧学校B级网块)

答案 3 :(得分:2)

乔纳森(Jonathan)的回答(及其评论)对IPv4有益

如果测试支持IPv6,则它具有明显的黑洞,您可以使用:RFC 6666中定义的0100::/64

使用254.254.254.254很容易记住,因为它很容易记住,但是在某些平台上,它会立即给出“传输失败。常规失败”,而不是实际的超时,这可能是无效的单元测试。

答案 4 :(得分:1)

254.254.254.254

应该保留以供将来使用域名...

RFC 1700