3

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

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

在我的 JUnit 中,我尝试使用

Assert.assertTrue(stringUUID.getBytes().length() ==16) 

这个对吗?

4

2 回答 2

5

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

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

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

但是,这将失败,因为字符串表示超过 16 个字节。十六进制编码和连字符等等。

于 2012-06-27T06:17:53.960 回答
3

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

于 2012-06-27T06:26:46.480 回答