实现JUnit测试中的逻辑

  • 本文关键字:JUnit 测试 实现 java
  • 更新时间 :
  • 英文 :


我丢失了一些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的方法来执行红-绿重构周期。

首先,我会评论所有失败的测试,只有一个(最简单的一个([第一个红色],然后执行实现以使其通过[第一个绿色]。

然后取消注释下一个测试并再次实现。

冲洗并重复,直到所有测试都被取消注释并通过。

最新更新