如何在Eclipse中快速测试Java方法?

时间:2014-12-02 09:28:28

标签: java eclipse unit-testing debugging testing

我的My-code中有一个简单的方法,例如

private int specialAdd (int a, int b) {
  if(a < 100) {
    return 100 * a + b;
  } else {
    return a + b;
  }
}

有没有办法运行/调试所选代码&#34;在eclipse中给定参数值?我真的只想运行此方法并查看ab的几个值的结果。

7 个答案:

答案 0 :(得分:10)

  

有没有办法运行/调试所选代码&#34;在eclipse中给定参数值?

不,Eclipse需要常规main方法或@Test方法作为切入点。

当我想做一个&#34;一个关闭&#34;迷你测试,我通常做的是

class YourClass {
    private int specialAdd (int a, int b) {
       if(a < 100) {
           return 100 * a + b;
       } else {
           return a + b;
    }

    public static void main(String[] args) {
        System.out.println(new YourClass().specialAdd(10, 100));
    }
}

然后运行(或调试)当前类。 (专业提示:键入main并按 Ctrl + 空格将其展开为完整的主方法)


从JDK 9开始,您还可以使用jshell进行此类测试:

$ ./jshell
|  Welcome to JShell -- Version 1.9.0-internal
|  Type /help for help

-> int specialAdd(int a, int b) {
>>     if (a < 100) {
>>         return 100 * a + b;
>>     } else {
>>         return a + b;
>>     }
>> }
|  Added method specialAdd(int,int)

-> specialAdd(10, 5);
|  Expression value is: 1005
|    assigned to temporary variable $2 of type int

答案 1 :(得分:1)

将您的方法配置为单一测试,例如使用JUnit。通过这种方式,您将能够单独测试这些方法。

要使用jUnit,请在方法中添加 @Test 注释。你应该在你的方法中添加一个资产句子来检查你的方法操作/性能。例如:

   @Test
   public void testHelloWorld() 
   {
      h.setName("World");
      assertEquals(h.getName(),"World");
      assertEquals(h.getMessage(),"Hello World!");
   }

然后点击该方法并运行方式&gt; JUnit测试

enter image description here

您可以通过Maven下载JUnit:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
</dependency>

答案 2 :(得分:1)

首先,你不想直接测试这样的私有方法。如果它是公共的,你会编写两个JUnit测试用例,一个用于通过你的方法的每个可能路径。

public class YourClassTest {

    private YourClass toTest = new YourClass();

    @Test
    public void specialAddMultiplesSmallFirstAddendBy100() {
        int result = toTest.specialAdd(99, 7);
        assertEquals(9907, result);
    }

    @Test
    public void specialAddDoesNotIncreaseLargeFirstAddend() {
        int result = toTest.specialAdd(100, 7);
        assertEquals(107, result);
    }
}

如果assertEquals的两个参数不相等,JUnit将记录每个测试用例的失败。这使得这些测试可以添加到一组单元测试中并自动化。

但由于它是私有的,你应该使用类似的策略来通过调用它的方法来测试它。据推测,您的类中有一些公共方法,调用specialAdd - 通过测试该公共方法,您也将隐式测试specialAdd

答案 3 :(得分:1)

  private static int specialAdd (int a, int b) {
      if(a < 100) {
        return 100 * a + b;
      } else {
        return a + b;
      }
    }
  public static void main(String[] args) {
    System.out.println("" + specialAdd(10,20));
    System.out.println("" + specialAdd(11,21));
    System.out.println("" + specialAdd(12,23));
  }

这是运行应用程序并查看输出的方法。 如果要调试而不是先标记断点。 然后右键单击您的java类并选择&#39; Debug as&#39; - &gt; java应用程序。 单击工具栏中的步骤时,您将看到光标在断点处移动。

答案 4 :(得分:0)

在没有输入参数和输出参数的情况下使用Junit:

@Test 
private void specialAdd () {
  // provide the value of a and b
  int a = 30;
  int b = 20;
  if(a < 100) {
    System.out.println("100 * a + b =" + 100 * a + b);
  } else {
    System.out.println("a + b =" + a + b);
  }
}

然后,选择方法名称“specialAdd”并单击鼠标右键,选择run - &gt;运行junit测试。

答案 5 :(得分:0)

我建议你使用像testng / junit这样的测试框架,你可以断言你的方法返回的值,你可以用它们创建可重复的测试。

但是如果你想用main测试它,你可以做以下事情:

 public static void main(String args[]) {
       int number = specialAdd(99, 1);
       if (number != 9901) {
            System.out.println("Expected: " + 9901 + " Actual: " + number);
       }
       if (args.length >= 2) {//with system args
           int number1 = Integer.parseInt(args[0]);
           int number2 = Integer.parseInt(args[1]);
           number = specialAdd(number1, number2);
           if (number != ...) {} 
       }
 }

答案 6 :(得分:0)

在Eclipse中,您可以创建一个Scrapbook页面(扩展名为.jpage的文件)

在那里,您可以像在Method中一样编写java代码。

https://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-create_scrapbook_page.htm

例如,在包中创建一个test.jpage,其中包含您要测试的类和方法。 在那里写你的Java代码

int a = ..., b = ...;
if(a < 100) {
    return 100 * a + b;
} else {
    return a + b;
}

或者你可以调用你班级的方法。

com.mycomp.TestedClass testedInstance = new com.mycomp.TestedClass();
for(int a=0,b=0; b < 100 && a < 100; a++,b++) {
    System.out.println(testedInstance.specialAdd(a,b));
}

遗憾的是,必须写出此文件中的导入。 您可以通过选择它来运行您编写的代码&gt; rigth click&gt;执行。