如何使用我创建的对象在java中测试方法?(欢迎提供有用的标题建议。)

如何使用我创建的对象在java中测试方法?(欢迎提供有用的标题建议。),java,object,testing,methods,Java,Object,Testing,Methods,我正在学习一门关于JAVA的课程 我被告知添加一个方法(void swapNames(Greeter other))来交换这个Greeter和另一个Greeter的名称。然后在Greeter类中创建两个对象,并使用swapNames方法交换它们的名称 我从 public class Greeter { public Greeter(String aName){ name = aName; } public String sayHello(){

我正在学习一门关于JAVA的课程

我被告知添加一个方法(void swapNames(Greeter other))来交换这个Greeter和另一个Greeter的名称。然后在Greeter类中创建两个对象,并使用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方法的tester类,我创建了两个Greeter的对象实例

Greeter nameGreeter = new Greeter("John Smith");
Greeter nameGreeter = new Greeter("Jane Doe");

不过我不知道该怎么办

如果您的
swapNames
方法是
静态的
(与问题代码一样),它应该将两个
问候者
作为参数,否则在与另一个进行交换时,它将不知道该问候者的名称

我将使该方法成为实例(删除
static
关键字),然后:

  • 在方法作用域变量中存储
    other.getName()
  • Set
    other.setName(this.name)
  • this.name
    设置为存储变量
然后,您可以实例化两个具有不同名称的
Greeter
s,在其中一个上调用
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(消息、期望值、实际值)

您可能应该仔细阅读
assert
。然后运行所有可能的测试以获得预期值。@Emz我将运行哪种类型的测试?您应该查看JUnit。然后你可以用它来确认你得到的结果是正确的,东西是(不是)空的,等等。看看这个教程(以及互联网上的大量其他教程):我将研究这个“断言”的东西:)ty