我想爲這個類創建一個JUnit測試。複雜的Junit測試案例
什麼是最好的方式去測試不同的if-else語句。
我試過一些通用的單元測試用例。
public class ObjectClaimHistory {
private List<ObjectCollaborationClaimHistory> objectClaimHistory = new ArrayList<>();
public void checkClaim(ClaimRequest claimRequest, Set<Integer> outOfDateCommits, int collaborationId, Integer parentCollaborationId, ClaimConflicts conflicts) {
Set<Integer> conflictingCollaborationClaims = new HashSet<>();
Set<Integer> conflictingCollaborationBlocks = new HashSet<>();
for (ObjectCollaborationClaimHistory collaborationClaimHistory: objectClaimHistory) {
if (!collaborationClaimHistory.checkClaim(claimRequest, outOfDateCommits)) {
conflictingCollaborationClaims.add(collaborationClaimHistory.getCollaborationId());
}
if (!collaborationClaimHistory.checkBlock(claimRequest, outOfDateCommits)) {
conflictingCollaborationBlocks.add(collaborationClaimHistory.getCollaborationId());
}
}
// After checking all histories create one commit conflict. Choose the closest collaboration.
if (conflictingCollaborationClaims.contains(collaborationId)) {
conflicts.addCommitConflict(claimRequest.getObjectId(), claimRequest.getClaim(), collaborationId);
}
else if (conflictingCollaborationBlocks.contains(collaborationId)) {
conflicts.addCommitConflict(claimRequest.getObjectId(), claimRequest.getBlock(), collaborationId);
}
我不太清楚這個測試如此複雜。你只要給它模擬版本的類(例如,總是返回false的CollabClaimHistory)並驗證結果。 –
我們通常使用一些IDE並在測試類中編寫一些代碼。 「最佳方式」是什麼意思? –