我正在尝试对我的一些文件运行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。
感谢任何帮助
答案 0 :(得分:0)
要在jGRASP中使用单个源文件中的JUnit,并且源文件处于焦点,请点击“创建JUnit测试文件”图标(工具栏上的红色/白色/绿色渐变文件图标)。如果那个图标不存在,请使用“工具”&gt; “JUnit”&gt; “配置”告诉jGRASP安装JUnit的位置。对于单个文件(没有项目),您的测试类必须与添加了“Test”的主类命名相同,因此对于类“MyClass”,它将是“MyClassTest”。如果您已有该文件,“创建JUnit测试文件”将询问您是否要使用现有文件。创建文件后,JUnit运行图标将显示在工具栏上(红色/白色/绿色渐变运行man图标),您可以使用它来编译和运行测试。
如果在jGRASP中有项目,请将测试文件作为测试文件添加到项目中,而不是源文件。如果它们已作为源添加,您可以将它们拖到项目窗格中的“测试”,或者右键单击并选择“标记为测试”。通过一个项目,jGRASP将跟踪哪些测试需要重新运行(如果源已被修改)以及上次运行是否成功,这将显示在项目窗格中。项目中的测试文件可以具有任何名称,但是与项目中具有“Test”的类相同的那些文件将被假定为与这些源文件相关联,并且将在项目窗格中显示测试文件的结果和相关的来源,这可以很方便。
如果您正在做所有这些但仍有问题,请使用“帮助”&gt; “报告错误”让开发人员(我)知道。