2017-09-13 54 views
0

首先,我要提到我已經看到Unit testing of encrypt/decryptUnit testing encryption and decryption in Java單元測試使用位於不同代碼庫中的一些鹽進行加密/解密

我想通過驗證其許可證來保護圖書館。該許可證包含諸如最大用戶數和到期時間等信息。

我遇到的問題是:

  • 的加密和解密是在兩個不同的代碼庫。解密器與庫一起封裝,但加密器不是,所以它們很難在同一個測試套件中使用!
  • 隨機鹽在加密器中使用,所以即使使用相同的輸入,加密器每次都會產生不同的輸出,我再也不能對結果做出斷言。
  • 爲了它的目的,解密器(使它更難注入另一個類)是最後一個類,它的所有方法都是私有的,除了一些包可訪問的入口點。

我不想考JCE,但我想測試我的代碼呢:

  • 從提取加密的許可證鹽,
  • 解密加密許可證,
  • 將輸出反序列化爲包含許可證數據的某些數據結構,

我應該創建一個代碼的克隆,並使用一些較軟的訪問約束和測試?然後問題是我沒有測試在客戶端系統上運行的真實代碼。

有沒有更好的解決方案來做到這一點?

回答

0

從你所描述的我沒有看到一個問題,在單獨測試它們。

  • 加密器和解密器在兩個不同的代碼庫中。

如果您單獨測試它們,則不是問題。

  • 隨機鹽被用作加密

內可以注入模擬隨機發生器,將產生相同的結果。

  • 對於它的目的着想解密是一個final類,以及其所有的方法都是私人

許多方法來測試私有方法可以看出here

  • 從加密許可證中提取鹽

所有你需要的是一個加密的許可證,你知道鹽的。

  • 解密加密許可證

同樣,你可以使用你知道它解密的許可證。

  • 反序列輸出到包含許可證數據的一些數據結構,

不相關的,並且是反串行化代碼的單獨的測試。

相關問題