2017-09-13 30 views
0

首先,我要提到我已经看到Unit testing of encrypt/decryptUnit testing encryption and decryption in Java单元测试使用位于不同代码库中的一些盐进行加密/解密

我想通过验证其许可证来保护图书馆。该许可证包含诸如最大用户数和到期时间等信息。

我遇到的问题是:

  • 的加密和解密是在两个不同的代码库。解密器与库一起封装,但加密器不是,所以它们很难在同一个测试套件中使用!
  • 随机盐在加密器中使用,所以即使使用相同的输入,加密器每次都会产生不同的输出,我再也不能对结果做出断言。
  • 为了它的目的,解密器(使它更难注入另一个类)是最后一个类,它的所有方法都是私有的,除了一些包可访问的入口点。

我不想考JCE,但我想测试我的代码呢:

  • 从提取加密的许可证盐,
  • 解密加密许可证,
  • 将输出反序列化为包含许可证数据的某些数据结构,

我应该创建一个代码的克隆,并使用一些较软的访问约束和测试?然后问题是我没有测试在客户端系统上运行的真实代码。

有没有更好的解决方案来做到这一点?

回答

0

从你所描述的我没有看到一个问题,在单独测试它们。

  • 加密器和解密器在两个不同的代码库中。

如果您单独测试它们,则不是问题。

  • 随机盐被用作加密

内可以注入模拟随机发生器,将产生相同的结果。

  • 对于它的目的着想解密是一个final类,以及其所有的方法都是私人

许多方法来测试私有方法可以看出here

  • 从加密许可证中提取盐

所有你需要的是一个加密的许可证,你知道盐的。

  • 解密加密许可证

同样,你可以使用你知道它解密的许可证。

  • 反序列输出到包含许可证数据的一些数据结构,

不相关的,并且是反串行化代码的单独的测试。

相关问题