【问题标题】:Generate 16 bytes uniqueId ( or UUID ) and test it生成 16 个字节的 uniqueId(或 UUID)并测试它
【发布时间】:2012-06-27 06:14:26
【问题描述】:

我需要创建一个唯一的 ID。它必须是 16 字节长。

我遇到了 java.util.UUID 并尝试使用 UUID.randomUUID()。但是如何确保生成的 UUID 是 16 字节长呢?

在我的 JUnit 中,我尝试使用

进行测试
Assert.assertTrue(stringUUID.getBytes().length() ==16) 

这是正确的吗?

【问题讨论】:

    标签: java uuid uniqueidentifier


    【解决方案1】:

    您不需要对 JDK 类进行单元测试(除非您正在为 JDK 编写代码)。 java.util.UUID 将创建正确的 16 字节唯一 ID。而是专注于您自己的代码的测试工作。

    对于更容易理解的测试用例输出(在断言失败的情况下),最好使用 assertEquals:

    assertEquals("UUID has expected length", 16, stringUUID.getBytes().length());
    

    但是,这将失败,因为 string representation 的长度超过 16 个字节。十六进制编码和连字符等等。

    【讨论】:

    • 让我们完善一下:如果您碰巧知道给定类的作用,则不需要对 jdk 进行单元测试,否则它可能会派上用场;)跨度>
    【解决方案2】:

    UUID.randomUUID() 方法生成一个type-4 UUID。那是 36 byte long 并且具有 xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx 的形式,其中 x 是任何 hexadecimal 数字,y 是 8、9、A 或 B 之一。例如f47ac10b-58cc-4372-a567-0e02b2c3d479.

    【讨论】:

      猜你喜欢
      • 2021-01-11
      • 1970-01-01
      • 1970-01-01
      • 2021-02-11
      • 2018-05-07
      • 1970-01-01
      • 1970-01-01
      • 2016-02-25
      • 2017-11-07
      相关资源
      最近更新 更多