我的My-code中有一个简单的方法,例如
private int specialAdd (int a, int b) {
if(a < 100) {
return 100 * a + b;
} else {
return a + b;
}
}
有没有办法运行/调试所选代码&#34;在eclipse中给定参数值?我真的只想运行此方法并查看a
和b
的几个值的结果。
答案 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测试:
您可以通过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代码。
例如,在包中创建一个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;执行。