错误:无法找到或加载主类junit_runner.JgrRunner

时间:2018-01-11 23:49:52

标签: java junit jgrasp

我正在尝试对我的一些文件运行JUnit测试。我很确定我已经安装并配置了JUnit,但配置中的某些内容不正确。我认为这与我正在使用运行Ubuntu的机器这一事实有关。这是我的主要文件:

import java.util.ArrayList;

public class ArrayListProblems {


/**
 * reverses the ArrayList in place. What that means is that you do not create a new
 * ArrayList pointer. Everything happens in the al variable
 * So if al starts as {1, 2, 3, 4, 5} when its finished the same memory location
 * holds {5, 4, 3, 2, 1}
 * @param al  the ArrayList to reverse
 */
public static void reverseArrayList(ArrayList<Integer> al)
{
 for(int i = al.size() - 1; i >= 0; i--)
 {
 al.add(al.remove(i));
 }  
}

/**
 * finds and returns the largest integer in the ArrayList al
 * @param al the ArrayList to search for the largest element
 * @return the value of te largest element. If no elements then return Integer.MIN_VALUE.
 */
public static int maximumElement(ArrayList<Integer> al)
{
 int max = al.get(0);
  for(int i = 1; i < al.size(); i++)
  {
   max = Math.max(max, al.get(i));
  }
  return max;
}

/**
 * In place changes all elements of the ArrayList to their absolute value
 * so {1,-2,3,-4} become {1,2,3,4}
 * @param al the ArrayList to make he changes in.
 */
public static void changeAllNegatives(ArrayList<Integer> al)
{
 for(int i = 0; i < al.size(); i++)
 {
 al.set(i, Math.abs(al.get(i)));
 }  
}

/**
 * Creates and returns an ArrayList with all the elements of the original ArrayList al that begin with the
 * begin substring.
 * So ({"bob","boob","ralph", "bop", "bing"}, "bo") would return the ArrayList {"bob","boob","bop"}
 * @param al The ArrayList to search
 * @param begin the substring to check the beginning
 * @return a new ArrayList containing only the elements that begin with begin
 */
public static ArrayList<String> getAllFirstLetters(ArrayList<String> al, String begin)
{
    ArrayList<String> list = new ArrayList<String>();
  for(int i = 0; i < al.size(); i++)
  {
   if(al.get(i).length() >= begin.length() && al.get(i).substring(0, begin.length()).equals(begin))
   {
    list.add(al.get(i));
   }
  }
  return list;
}

/**
 * returns the mode of the ArrayList. Note these are Strings not integers. 
 * Note that the mode is simply the element that appears most often. 
 * There are multiple ways to solve this problem.
 * @param al  The ArrayList to search
 * @return the element that appears most often in al
 */
public static String findMode(ArrayList<String> al)
{
 String currentMode = null;
 int currentModeCounter = 0;
 for(int i = 0; i < al.size(); i++)
 {
  int modeCounter = 0;
  String compare = al.get(i);
  for(int j = 0; j < al.size(); j++)
  {
   if(al.get(j).equals(compare))
   {
    modeCounter++;
   } 
  }
  if(modeCounter > currentModeCounter)
  {
   currentMode = compare;
   currentModeCounter = modeCounter;
  } 
 }
return currentMode;
}

public static void main (String args[])
 {
ArrayList<String> a1 = new ArrayList<String>();
a1.add("bob");
a1.add("boob");
a1.add("bob");
a1.add("bop");
a1.add("bing");
ArrayList<String> a2 = getAllFirstLetters(a1, "bo");
System.out.println(findMode(a1));
 }
}

这是测试文件:

 import java.util.ArrayList;
 import junit.framework.TestCase;
 import static org.junit.Assert.*;

 import org.junit.Test;

 public class ArrayListProblemsTest{

@Test
public void reverseArrayListTest1() {
    ArrayList<Integer> al = new ArrayList<Integer>();
    al.add(5);
    al.add(2);
    al.add(4);
    al.add(10);
    al.add(21);
    al.add(12);
    al.add(13);
    al.add(15);
    al.add(-1);
    al.add(6);
    ArrayListProblems.reverseArrayList(al);
    ArrayList<Integer> al2 = new ArrayList<Integer>();
    al2.add(6);
    al2.add(-1);
    al2.add(15);
    al2.add(13);
    al2.add(12);
    al2.add(21);
    al2.add(10);
    al2.add(4);
    al2.add(2);
    al2.add(5);
    assertEquals(al2, al);

}


@Test
public void reverseArrayListTest2() {
    ArrayList<Integer> al = new ArrayList<Integer>();

    al.add(2);
    al.add(4);
    al.add(10);
    al.add(21);
    al.add(12);
    al.add(13);
    al.add(15);
    al.add(-1);
    al.add(6);
    ArrayListProblems.reverseArrayList(al);
    ArrayList<Integer> al2 = new ArrayList<Integer>();
    al2.add(6);
    al2.add(-1);
    al2.add(15);
    al2.add(13);
    al2.add(12);
    al2.add(21);
    al2.add(10);
    al2.add(4);
    al2.add(2);
    assertEquals(al2, al);

}

@Test
public void reverseArrayListTest3(){
    ArrayList<Integer> al = new ArrayList<Integer>();
    ArrayList<Integer> al2 = new ArrayList<Integer>();
    assertEquals(al,al2);
}

@Test
public void maximumElementTest1(){
    ArrayList<Integer> al = new ArrayList<Integer>();

    al.add(2);
    al.add(4);
    al.add(10);
    al.add(21);
    al.add(12);
    al.add(13);
    al.add(15);
    al.add(-1);
    al.add(6);
    int max = ArrayListProblems.maximumElement(al);
    assertEquals(21, max);
}
@Test
public void maximumElementTest2(){
    ArrayList<Integer> al = new ArrayList<Integer>();
    int max = ArrayListProblems.maximumElement(al);
    assertEquals(Integer.MIN_VALUE, max);
}

@Test
public void maximumElementTest3(){
    ArrayList<Integer> al = new ArrayList<Integer>();
    al.add(-2);
    al.add(-4);
    al.add(-10);
    al.add(-21);
    al.add(-12);
    al.add(-13);
    al.add(-15);
    al.add(-1);
    al.add(-6);
    int max = ArrayListProblems.maximumElement(al);
    assertEquals(-1, max);
}

@Test
public void changeAllNegativesTest1(){
    ArrayList<Integer> al = new ArrayList<Integer>();

    al.add(2);
    al.add(4);
    al.add(-10);
    al.add(21);
    al.add(-12);
    al.add(13);
    al.add(15);
    al.add(-1);
    al.add(6);
    ArrayListProblems.changeAllNegatives(al);
    ArrayList<Integer> al2 = new ArrayList<Integer>();

    al2.add(2);
    al2.add(4);
    al2.add(10);
    al2.add(21);
    al2.add(12);
    al2.add(13);
    al2.add(15);
    al2.add(1);
    al2.add(6);
    assertEquals(al2,al);
}

@Test
public void changeAllNegativesTest2(){
    ArrayList<Integer> al = new ArrayList<Integer>();
    al.add(-2);
    al.add(-4);
    al.add(-10);
    al.add(-21);
    al.add(-12);
    al.add(-13);
    al.add(-15);
    al.add(-1);
    al.add(-6);
    ArrayList<Integer> al2 = new ArrayList<Integer>();
    al2.add(2);
    al2.add(4);
    al2.add(10);
    al2.add(21);
    al2.add(12);
    al2.add(13);
    al2.add(15);
    al2.add(1);
    al2.add(6);
    ArrayListProblems.changeAllNegatives(al);

    assertEquals(al2,al);
}

@Test
public void changeAllNegativesTest3(){
    ArrayList<Integer> al = new ArrayList<Integer>();
    ArrayList<Integer> al2 = new ArrayList<Integer>();
    ArrayListProblems.changeAllNegatives(al);
    assertEquals(al2,al);   
}

@Test
public void changeAllNegativesTest4(){
    ArrayList<Integer> al = new ArrayList<Integer>();
    al.add(5);
    al.add(2);
    al.add(4);
    al.add(10);
    al.add(21);
    al.add(12);
    al.add(13);
    al.add(15);
    ArrayListProblems.changeAllNegatives(al);
    ArrayList<Integer> al2 = new ArrayList<Integer>();
    al2.add(5);
    al2.add(2);
    al2.add(4);
    al2.add(10);
    al2.add(21);
    al2.add(12);
    al2.add(13);
    al2.add(15);
    assertEquals(al2, al);
}

@Test
public void getAllFirstLettersTest1(){
    ArrayList<String> al = new ArrayList<String>();
    al.add("bob");
    al.add("boob");
    al.add("ralph");
    al.add("bop");
    al.add("bing");
    ArrayList <String> al3 = ArrayListProblems.getAllFirstLetters(al, "bo");
    ArrayList<String> al2 = new ArrayList<String>();
    al2.add("bob");
    al2.add("boob");
    al2.add("bop");
    assertEquals(al2,al3);
}

@Test
public void getAllFirstLettersTest2(){
    ArrayList<String> al = new ArrayList<String>();
    al.add("bob");
    al.add("boob");
    al.add("ralph");
    al.add("bop");
    al.add("bing");
    ArrayList<String> al3 = ArrayListProblems.getAllFirstLetters(al, "b");
    ArrayList<String> al2 = new ArrayList<String>();
    al2.add("bob");
    al2.add("boob");
    al2.add("bop");
    al2.add("bing");

    assertEquals(al2,al3);

}

@Test
public void getAllFirstLettersTest3(){
    ArrayList<String> al = new ArrayList<String>();
    al.add("bob");
    al.add("boob");
    al.add("ralph");
    al.add("bop");
    al.add("bing");
    ArrayList<String> al3 = ArrayListProblems.getAllFirstLetters(al, "ra");
    ArrayList<String> al2 = new ArrayList<String>();
    al2.add("ralph");
    assertEquals(al2,al3);

}
@Test
public void getAllFirstLettersTest4(){
    ArrayList<String> al = new ArrayList<String>();
    al.add("bob");
    al.add("boob");
    al.add("ralph");
    al.add("bop");
    al.add("bing");
    ArrayList <String> al3 = ArrayListProblems.getAllFirstLetters(al, "sam");
    ArrayList<String> al2 = new ArrayList<String>();
    assertEquals(al2,al3);
}

@Test
public void findModeTest1(){
    ArrayList<String> al = new ArrayList<String>();
    al.add("Sam");
    al.add("Ralph");
    al.add("Sam");
    al.add("Bob");
    al.add("Nikki");
    al.add("Bob");
    al.add("Nikki");
    al.add("Sam");
    al.add("Frank");
    String mode = ArrayListProblems.findMode(al);
    assertEquals("Sam",mode);
}
@Test
public void findModeTest2(){
    ArrayList<String> al = new ArrayList<String>();
    al.add("Ralph");
    al.add("Bob");
    al.add("Nikki");
    al.add("Bob");
    al.add("Nikki");
    al.add("Sam");
    al.add("Sam");
    al.add("Sam");
    al.add("Frank");
    String mode = ArrayListProblems.findMode(al);
    assertEquals("Sam",mode);
}

@Test
public void findModeTest3(){
    ArrayList<String> al = new ArrayList<String>();
    al.add("Ralph");
    al.add("Bob");
    al.add("Nikki");
    al.add("Bob");
    al.add("Nikki");
    al.add("Sam");
    al.add("Sam");
    al.add("Sam");
    al.add("Frank");
    al.add("Bob");
    al.add("Bob");
    String mode = ArrayListProblems.findMode(al);
    assertEquals("Bob",mode);
}

@Test
public void findModeTest4(){
    ArrayList<String> al = new ArrayList<String>();
    String mode = ArrayListProblems.findMode(al);
    assertNull(mode);
 }
}

当我点击编译并使用JUnit Tests运行时,它显示错误:无法找到或加载主类junit_runner.JgrRunner,几秒钟后,它说无法在8秒后连接到JUnit Runner。

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

要在jGRASP中使用单个源文件中的JUnit,并且源文件处于焦点,请点击“创建JUnit测试文件”图标(工具栏上的红色/白色/绿色渐变文件图标)。如果那个图标不存在,请使用“工具”&gt; “JUnit”&gt; “配置”告诉jGRASP安装JUnit的位置。对于单个文件(没有项目),您的测试类必须与添加了“Test”的主类命名相同,因此对于类“MyClass”,它将是“MyClassTest”。如果您已有该文件,“创建JUnit测试文件”将询问您是否要使用现有文件。创建文件后,JUnit运行图标将显示在工具栏上(红色/白色/绿色渐变运行man图标),您可以使用它来编译和运行测试。

如果在jGRASP中有项目,请将测试文件作为测试文件添加到项目中,而不是源文件。如果它们已作为源添加,您可以将它们拖到项目窗格中的“测试”,或者右键单击并选择“标记为测试”。通过一个项目,jGRASP将跟踪哪些测试需要重新运行(如果源已被修改)以及上次运行是否成功,这将显示在项目窗格中。项目中的测试文件可以具有任何名称,但是与项目中具有“Test”的类相同的那些文件将被假定为与这些源文件相关联,并且将在项目窗格中显示测试文件的结果和相关的来源,这可以很方便。

如果您正在做所有这些但仍有问题,请使用“帮助”&gt; “报告错误”让开发人员(我)知道。