Java 为该方法编写测试
需要为以下方法编写一个测试Java 为该方法编写测试,java,unit-testing,Java,Unit Testing,需要为以下方法编写一个测试 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 voi
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);
}
Expected是方法的预期返回值,actual是它实际返回的值。调用该方法并将其存储在“actual”中,并与您期望的内容进行比较
public void testIsValidSsn() {
boolean actual = isValidSsn("123-45-6789");
boolean exp = true;
assertEquals(exp, actual);
}
请为您的特定序列尝试此正则表达式
^[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;
}
}
}
输出:
编号已与测试匹配,您要测试对该方法的调用:
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);
}
您还需要确保覆盖所有逻辑路由。使用参数化单元测试用例
@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);
}
你必须使用图书馆
优势
- 测试方法的可重用性。这称为数据驱动单元测试
- 它解决了JUnit不能将参数作为参数传递给方法的限制
- 易于添加新案例,这为您提供了可维护性和可读性