如何对此字符串反向代码使用参数化 Junit 测试
how to use parametized Junit tests for this string reverse code
我在某处读到我可以使用 @RunWith(JUnitParamsRunner.class) 但我不知道如何使用它来测试我的字符串反转方法:
这是我的 class:
public class StringReverse {
public static String reverse(String s){
List<String> tempArray = new ArrayList<String>(s.length());
for(int i = 0; i <s.length(); i++){
tempArray.add(s.substring(i, i+1));
}
StringBuilder reverseString = new StringBuilder(s.length());
for(int i = tempArray.size() - 1; i >=0; i--){
reverseString.append(tempArray.get(i));
}
return reverseString.toString();
}
}
这是我的测试 class:
public class StringReverTest {
@Test
public void test() {
StringReverse s = new StringReverse();
assertEquals("cba", s.reverse("abc"));
assertEquals("", s.reverse(""));
assertNotEquals("abc", s.reverse("abc"));
}
@Test(expected = NullPointerException.class)
public void testThrowNPE(){
StringReverse s = new StringReverse();
s.reverse(null);
throw new NullPointerException();
}
}
有人可以告诉我如何使用参数化测试来测试上面的内容吗?
谢谢
您可以用这个替换您的第一个测试:
@Test
@Parameters(method = "reverseValues")
public void reverseString(String input, String output) {
StringReverse s = new StringReverse();
assertEquals(output, s.reverse(input));
}
private Object[] reverseValues() {
return new Object[]{
new Object[]{"abc", "cba"},
new Object[]{"", ""}
};
}
第二个测试不需要 throw new NullPointerException()
行:
@Test(expected = NullPointerException.class)
public void testThrowNPE(){
StringReverse s = new StringReverse();
s.reverse(null);
}
预期注释将验证 s.reverse(null)
抛出 NullPointerException
。
我在某处读到我可以使用 @RunWith(JUnitParamsRunner.class) 但我不知道如何使用它来测试我的字符串反转方法:
这是我的 class:
public class StringReverse {
public static String reverse(String s){
List<String> tempArray = new ArrayList<String>(s.length());
for(int i = 0; i <s.length(); i++){
tempArray.add(s.substring(i, i+1));
}
StringBuilder reverseString = new StringBuilder(s.length());
for(int i = tempArray.size() - 1; i >=0; i--){
reverseString.append(tempArray.get(i));
}
return reverseString.toString();
}
}
这是我的测试 class:
public class StringReverTest {
@Test
public void test() {
StringReverse s = new StringReverse();
assertEquals("cba", s.reverse("abc"));
assertEquals("", s.reverse(""));
assertNotEquals("abc", s.reverse("abc"));
}
@Test(expected = NullPointerException.class)
public void testThrowNPE(){
StringReverse s = new StringReverse();
s.reverse(null);
throw new NullPointerException();
}
}
有人可以告诉我如何使用参数化测试来测试上面的内容吗?
谢谢
您可以用这个替换您的第一个测试:
@Test
@Parameters(method = "reverseValues")
public void reverseString(String input, String output) {
StringReverse s = new StringReverse();
assertEquals(output, s.reverse(input));
}
private Object[] reverseValues() {
return new Object[]{
new Object[]{"abc", "cba"},
new Object[]{"", ""}
};
}
第二个测试不需要 throw new NullPointerException()
行:
@Test(expected = NullPointerException.class)
public void testThrowNPE(){
StringReverse s = new StringReverse();
s.reverse(null);
}
预期注释将验证 s.reverse(null)
抛出 NullPointerException
。