我丢失了一些Java代码。我只保留了几个用于哈希的JUnit测试。我试着实现这个:
public interface HmacService {
String hash(final String number);
String getCheckhash(final String hash);
}
...
class HmacServiceImpl implements HmacService {
public String hash(String number) {
try {
return Hashing.sha256().hashString(plainCardNumber, StandardCharsets.UTF_8).toString();
} catch (Exception var3) {
}
}
public String getNonCreditCardSha1Hmac(String hash) {
try {
return Hashing.sha1().hashString(hash, StandardCharsets.UTF_8).toString();
} catch (Exception var3) {
}
}
final class HashPair{
String firstHash;
String secondHash;
public HashPair(String firstHash, String secondHash) {
this.firstHash = firstHash;
this.secondHash = secondHash;
}
// perform hash comparison here
}
}
JUnit测试:
public HmacService.HashPair generateQuickHash(final String cardNum) {
return cryptoService.generateHashPair(cardNum);
}
if(new HmacService.HashPair(oldHash, oldHash)) == null){
// some error message
}
你知道我如何实现基于JUnit测试的代码吗?
这是在测试HMAC-SHA-256,它有无数的Java实现。奇怪的是,没有传递签名-无论是在哈希时,还是在比较哈希时。我不认为代码有任何类似的真正目的。
取决于您对该部分代码的覆盖程度。
如果它的覆盖率很高,您可以采用类似TDD的方法来执行红-绿重构周期。
首先,我会评论所有失败的测试,只有一个(最简单的一个([第一个红色],然后执行实现以使其通过[第一个绿色]。
然后取消注释下一个测试并再次实现。
冲洗并重复,直到所有测试都被取消注释并通过。