需要为以下方法编写测试
public static boolean isValidSsn(String aSsn) { //ssn = social security number
if (aSsn.matches("\\d{3}-\\d{2}-\\d{4}")) { // Match found
return true;
}
// Not a valid number
return false;
}
我试过了,我知道这是非常错误的,但不知道如何纠正它。
public void testIsValidSsn() {
String actual = "\\d{3}-\\d{2}-\\d{4}";
String exp = "123-45-6789";
assertEquals(actual, exp);
}
答案 0 :(得分:4)
预期是方法的预期返回值,而实际是它实际返回的值。调用方法并将其存储在“实际”中并与您的预期进行比较。
public void testIsValidSsn() {
boolean actual = isValidSsn("123-45-6789");
boolean exp = true;
assertEquals(exp, actual);
}
答案 1 :(得分:2)
使用参数化单元测试用例
@Test
@Parameters({"123-345-23,false","123-123-213-123,true"})
public void testIsValidSSN(String ssnValue, boolean expectedResult){
boolean result = isValidSSN(ssnValue);
assertEquals("Expected result did not match for SSN:" + ssnValue, expectedResult,result);
}
您必须使用JUnitParams库
答案 2 :(得分:1)
为您的特定序列试用此正则表达式
^[0-9]{3}\-[0-9]{2}\-[0-9]{4}$
这绝对有助于你。
public class Sample
{
public static void main(String ar[])
{
String aNumber= "254-58-3698";
isValidNumber(aNumber);
}
public static Boolean isValidNumber(String aNumber)
{
String pattern = "^[0-9]{3}\\-[0-9]{2}\\-[0-9]{4}$";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println("Number has Matched");
return true;
} else {
System.out.println("NO MATCH");
return false;
}
}
}
输出:
号码已匹配
答案 3 :(得分:1)
通过测试,您想测试对方法的调用:
public void shouldReturnTrueIfValidSSN() {
// Given
YourClass yourClass = new YourClass();
// When
boolean result = yourClass.isValidSsn("123-456-789");
// Then
assertEquals(result, true);
}
public void shouldReturnFalseIfInvalidSSN() {
// Given
YourClass yourClass = new YourClass();
// When
boolean result = yourClass.isValidSsn("yolo");
// Then
assertEquals(result, false);
}
您还需要确保涵盖所有逻辑路线。