如何使用我创建的 objects 测试 java 中的方法? (欢迎提供有用的标题建议。)
How do I test a method in java with objects I created? (Helpful title suggestions are welcome.)
我正在通过 class 了解 JAVA...
我被告知要添加一个方法 (void swapNames(Greeter other)) 来交换这个欢迎者的名字和另一个。然后在 Greeter class 中创建两个 object 并使用 swapNames 方法交换它们的名称。
我从 ..
开始
public class Greeter {
public Greeter(String aName){
name = aName;
}
public String sayHello(){
return "Hello, " + name + "!";
}
private static String name;
public static void swapNames(Greeter other){
String aux = name;
name = other.getName();
other.setName(aux);
}
private void setName(String aux) {
Greeter.name = aux;
}
private String getName() {
return name;
}
}
但我不确定如何测试我的代码。
我有一个带有 main 方法的测试器 class,我创建了两个 object Greeter 实例..
Greeter nameGreeter = new Greeter("John Smith");
Greeter nameGreeter = new Greeter("Jane Doe");
虽然我不确定该去哪里。
如果你的swapNames
方法是static
(如问题代码),它应该接受两个Greeter
作为参数,否则它不会知道this
Greeter
交换时的名字。
我会创建方法实例(删除 static
关键字),然后:
- 将
other.getName()
存储在方法范围的变量中
- 设置
other.setName(this.name)
- 将
this.name
设置为您的存储变量
然后您可以实例化两个具有不同名称的 Greeter
,调用其中一个的 swap
方法并将另一个作为参数,并通过您的 getter 或您的 sayHello
方法。
测试范围的选择将影响您选择的框架或方法:仅打印或记录、断言,或使用一些专门的框架,例如 JUnit。
不要使用单个静态变量来保存应该是某个对象实例的 属性 的任何内容。
class Greeter {
private String name; // like this!
public void swap( Greeter other ){ // like this!
现在测试:
Greeter greetsJohn = new Greeter( "John Smith" );
Greeter greetsJane = new Greeter( "Jane Doe" );
System.out.println( greetsJohn.sayHello() );
System.out.println( greetsJane.sayHello() );
greetsJohn.swapNames( greetsJane );
System.out.println( greetsJohn.sayHello() );
System.out.println( greetsJane.sayHello() );
静态字符串名称意味着每个人都向同一个人打招呼。
AssertEquals 可用于检查字符串的值。
测试可以这样进行:
Greeter greetsJohn = new Greeter("John Smith");
Greeter greetsJane = new Greeter("Jane Doe");
greetsJohn.swapNames(greetsJane);
assertEquals("Name in greetsJohn is replaced with jane","Jane Doe",greetsJohn.sayHello());
语法:assertEquals(message, expectedValue, actualValue);
我正在通过 class 了解 JAVA...
我被告知要添加一个方法 (void swapNames(Greeter other)) 来交换这个欢迎者的名字和另一个。然后在 Greeter class 中创建两个 object 并使用 swapNames 方法交换它们的名称。
我从 ..
开始public class Greeter {
public Greeter(String aName){
name = aName;
}
public String sayHello(){
return "Hello, " + name + "!";
}
private static String name;
public static void swapNames(Greeter other){
String aux = name;
name = other.getName();
other.setName(aux);
}
private void setName(String aux) {
Greeter.name = aux;
}
private String getName() {
return name;
}
}
但我不确定如何测试我的代码。
我有一个带有 main 方法的测试器 class,我创建了两个 object Greeter 实例..
Greeter nameGreeter = new Greeter("John Smith");
Greeter nameGreeter = new Greeter("Jane Doe");
虽然我不确定该去哪里。
如果你的swapNames
方法是static
(如问题代码),它应该接受两个Greeter
作为参数,否则它不会知道this
Greeter
交换时的名字。
我会创建方法实例(删除 static
关键字),然后:
- 将
other.getName()
存储在方法范围的变量中 - 设置
other.setName(this.name)
- 将
this.name
设置为您的存储变量
然后您可以实例化两个具有不同名称的 Greeter
,调用其中一个的 swap
方法并将另一个作为参数,并通过您的 getter 或您的 sayHello
方法。
测试范围的选择将影响您选择的框架或方法:仅打印或记录、断言,或使用一些专门的框架,例如 JUnit。
不要使用单个静态变量来保存应该是某个对象实例的 属性 的任何内容。
class Greeter {
private String name; // like this!
public void swap( Greeter other ){ // like this!
现在测试:
Greeter greetsJohn = new Greeter( "John Smith" );
Greeter greetsJane = new Greeter( "Jane Doe" );
System.out.println( greetsJohn.sayHello() );
System.out.println( greetsJane.sayHello() );
greetsJohn.swapNames( greetsJane );
System.out.println( greetsJohn.sayHello() );
System.out.println( greetsJane.sayHello() );
静态字符串名称意味着每个人都向同一个人打招呼。
AssertEquals 可用于检查字符串的值。
测试可以这样进行:
Greeter greetsJohn = new Greeter("John Smith");
Greeter greetsJane = new Greeter("Jane Doe");
greetsJohn.swapNames(greetsJane);
assertEquals("Name in greetsJohn is replaced with jane","Jane Doe",greetsJohn.sayHello());
语法:assertEquals(message, expectedValue, actualValue);