【问题标题】:JUnit: what am I missingJUnit:我错过了什么
【发布时间】:2018-09-30 04:32:55
【问题描述】:

谁能告诉我 JUnit 是如何运作的,我该如何修复这段代码?我确定有一堆我找不到的错误。

方法代码:

   public static String findMinimumRecursive(String[] array, String 
currentMinString){// another bonus method
        if(array.length == 0)
            return currentMinString;
            return findMinimumRecursive(Arrays.copyOfRange(array, 1, 
array.length), 
((Integer)currentMinString.length()).compareTo(array[0].length()) < 0 ?  
currentMinString : array[0]); 

  }

toString 代码:

public String toString()
{
    String result;
   result = " result : " + (findMinimumRecursive(stringArray));
   return recursiveCompare;
}

JUnit 代码:

import org.junit.*;
import static org.junit.Assert.*;

public class recursiveCompareTester{

    private String [] tringArray = new String[4];

    @Before
    public void setUp() {
        stringArray[4] = {"delta","alpha","omega","zeta"}
    }

    @Test
    public void recursiveCompareTester() {
        assertEquals(findMinimumRecursive(stringArray).toString,zeta );
    }

}

【问题讨论】:

    标签: java recursion junit tostring


    【解决方案1】:

    你为什么在这里使用toString 方法,这是不需要的。首先删除toString 方法。那么被测试的类应该是这样的。

    public class RecursiveCompare {
        public static String findMinimumRecursive(String[] array, String currentMinString) {// another bonus method
            if (array.length == 0)
                return currentMinString;
            return findMinimumRecursive(Arrays.copyOfRange(array, 1, array.length),
                    ((Integer) currentMinString.length()).compareTo(array[0].length()) < 0 ? currentMinString : array[0]);
    
        }
    }
    

    我在您的测试类中声明数组时发现了一些问题,我也已修复它们。这是测试类的正确版本。

    import static org.junit.Assert.assertEquals;
    
    import org.junit.Before;
    import org.junit.Test;
    
    public class RecursiveCompareTester {
        private String[] stringArray;
    
        @Before
        public void setUp() {
            stringArray = new String[] { "delta", "alpha", "omega", "zeta" };
        }
    
        @Test
        public void recursiveCompareTester() {
            assertEquals(RecursiveCompare.findMinimumRecursive(stringArray, "invalid"), "zeta");
        }
    }
    

    这个测试只是通过了。

    【讨论】:

    • 我试过了,我得到了一个错误:recursiveCompareTester.java:36: error: cannot find symbol assertEquals(findMinimumRecursive(stringArray, "invalid"), "zeta"); ^ 符号:方法 findMinimumRecursive(String[],String) 位置:类 recursiveCompareTester 1 错误知道吗?
    • 只需像import static org.junit.Assert.assertEquals;这样添加一个静态导入
    • 我已经用测试类中的import 语句更新了我的答案。现在可以用了吗?
    • 我在尝试时将它与导入一起使用。它仍然有效。 recursiveCompareTester.java:37: 错误: 找不到符号 assertEquals(RecursiveCompare.findMinimumRecursive(stringArray, "invalid"), "zeta"); ^ 符号:变量 RecursiveCompare 位置:类 recursiveCompareTester 1 错误
    • 它现在可以工作了,这是因为 RecursiveCompare 上的资本化 lol
    猜你喜欢
    • 2014-03-21
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-11
    • 2019-08-29
    相关资源
    最近更新 更多