0

以下の特定のクラスについて、クラスでこれらのメソッドを試すためのメソッドをTimeTest持つ新しいクラスでこのクラスをテストするように依頼されました。メソッドを使用して以前にクラスをテストしたことがありますが、クラスを使用してクラスをテストする方法がわかりません。誰かが私が始めるのを手伝ってくれますか?doTest()Timemain

public class Time {

    private int minute;
    private int hour;
    private int totalMinute;

    public Time() {
        minute = 0;
        hour = 0;
    }

    public Time(int hours, int minutes) {
        setHour(hours);
        setMinute(minutes);
    }

    private void setHour(int hours) {
        if (hours < 24 && hours >= 0) {
            hour = hours;
        } else {
            hour = 0;
        }
    }

    private void setMinute(int minutes) {
        if (minutes < 60 && minutes >= 0) {
            minute = minutes;
        } else {
            minute = 0;
        }
    }

    public void setTime(int hours, int minutes) {
        setHour(hours);
        setMinute(minutes);
    }

    public int getElapsedTime(Time that) {
        int thisTime = this.getTotalMinutes();
        int thatTime = that.getTotalMinutes();
        if (thisTime > thatTime) {
            return thisTime - thatTime;
        }
        return thatTime - thisTime;
    }

    private int getTotalMinutes() {
        totalMinute = (hour * 60) + minute;

        return totalMinute;
    }

    public String getAsString() {
        if (hour < 10 && minute < 10) {
            return "0" + hour + ":0" + minute;
        } else if (hour < 10 && minute >= 10) {
            return "0" + hour + ":" + minute;
        } else if (hour >= 10 && minute < 10) {
            return hour + ":0" + minute;
        } else {
            return hour + ":" + minute;
        }
    }
}
4

7 に答える 7

2

あなたの希望にぴったりのクラスがここにあります。このクラスにメイン メソッドが必要ない場合は、別のクラスにメイン メソッドを記述し、TimeTest のオブジェクトを作成して、メイン メソッドを持つそのクラスから doTest(time) メソッドを呼び出します。

public class TimeTest {

public static void main(String[] args) {
    Time time = new Time();
    time.setTime(10, 10);
    doTest(time);

}

private static void doTest(Time time) {
    //set the time to 10 hours and 10 minutes
    System.out.println("Get as String: " + time.getAsString());
    // set the new time to test the getElapsedTime(time) method
    Time newTime = new Time(11, 30);
    System.out.println("Get Elapsed Time: " + time.getElapsedTime(newTime) + " minutes");
}

}

ありがとう

于 2012-11-27T04:44:06.403 に答える
1

JUnitを見てください。使いやすいテスト環境を提供できます。

コードをテストするときの主な概念 - テストは 1 つのことだけをアサートする必要があります。それが何であるは、コードによって異なります。

以下は、現在のクラスに対するテストの例です。Timeクラスを 1:13 に設定した後、その正確な文字列を返すことを主張したいと思います。このテストは、オブジェクトとは関係なく、独自のクラスに存在する必要がありますTime

@Test
public void testGetAsString() {
    Time testObj = new Time();
    String expected = "01:13";
    testObj.setTime(1, 13);
    String result = testObj.getAsString();
    Assert.assertEquals("the time isn't properly rendered", result, expected);
}

このような単体テストは、大規模なプロジェクトやリファクタリングに大いに役立ち、テスト駆動開発の 3 つの部分の 1 つです。

興味がある場合は、別のオブジェクトの動作を模倣またはモックする他のテスト フレームワークを調べることもできます。EasyMockPowerMock、およびMockitoは、その点で役立ちます。

于 2012-11-27T04:40:37.693 に答える
1

Junitは、ロジックのテストを開始するのに最適な場所です。

于 2012-11-27T04:32:17.843 に答える
0

簡単な方法は、新しい Test クラスの main() で行ったことをすべて行うことです。

そのため、以前に main がクラスの新しいオブジェクトを作成し、そのオブジェクトでメソッドを呼び出した場合、Test クラスは元のクラスの新しいオブジェクトを作成し、そのメソッドを呼び出します。

何かのようなもの:

public class TimeTest
{
   public static void main(String [] args)
   {
      Time timeA = new Time();
      Time timeB = new Time(12, 30);
      System.out.println("Time Diff: " + timeB.getElapsedTime(timeA);
      //  etc
   }
}

これを取得したら、JUnit などのさまざまなテスト フレームワークを調査します。JUnit は、テストの管理側を自動的に処理し、コードを実行するようにテストを実行できるようにします。

于 2012-11-27T04:36:27.240 に答える
0
public class TimeTest
{

  public static void main(String args[])
  {
   doTest();

  }

  public static void doTest()
  {
   Time t1=new Time();

   Time t2=new Time(12,45);

   System.out.printf("%s\n",t1.getAsString());
   System.out.printf("%s",t2.getAsString());

  }


}// end of class TimeTest

これが、クラス TimeTest のメソッド doTest でクラス time の他のメソッドを試す方法です。

于 2012-11-27T05:41:37.493 に答える
0

JUnit フレームワークをチェックアウトする必要があります。

テストクラスは次のようになります。

public class TimeTest {

    public TimeTest() {
    }

    @BeforeClass
    public static void setUpClass() {
    }

    @AfterClass
    public static void tearDownClass() {
    }

    @Before
    public void setUp() {
    }

    @After
    public void tearDown() {
    }

    @Test

    public void doTest()
    {
        Time instance = new Time();
        //your code to test the methods
        //use assertEquals(expectedResult, result) to compare the result you expected                with the result from your code  
    }

}
于 2012-11-27T04:41:27.757 に答える
-1

そのクラス内に別のテストクラスを記述し、メイン関数を使用します。そのメイン関数からクラスをテストします。

あなたの時間クラスをテストする必要がありますか?私は正しいですか?

 public class test
 {
     public static void main(String args[])
     {
        Time t = new Time();

       //now use any method of time class
        //i.e. t.methodname(pram)
     }
 }
于 2012-11-27T04:30:09.820 に答える