对于下面给定的类,我被要求使用新的TimeTest
类测试此类,该类具有方法doTest()
,以便在我的Time
类中尝试这些方法。我之前通过main
方法测试了类,但我不知道如何使用类测试类。谁能帮助我开始?
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;
}
}
}
答案 0 :(得分:2)
这是可以满足您要求的课程。如果你不想在这个类中使用main方法,那么在另一个类中创建main方法并创建TimeTest的对象,并从具有main方法的那个类中调用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");
}
}
由于
答案 1 :(得分:1)
Junit是开始测试逻辑的最佳位置。
答案 2 :(得分:1)
看看JUnit。它可以为您提供易于使用的测试环境。
当您测试代码时的主要概念 - 测试应该只断言一件事。那个 的东西取决于你的代码。
以下是您当前课程测试的示例。我希望断言,在将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);
}
这样的单元测试可以极大地帮助您完成大型项目,重构,并且是测试驱动开发的三个部分之一。
如果您感兴趣,还可以查看模仿或模拟其他对象行为的其他测试框架。 EasyMock,PowerMock和Mockito可以在这方面为您提供帮助。
答案 3 :(得分: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,它会自动处理测试的管理方面,允许你像你做代码一样进行测试。
答案 4 :(得分: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
}
}
答案 5 :(得分: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中尝试其他类时间方法的方法答案 6 :(得分:-1)
在该类中编写另一个测试类使用main函数。并从该主要功能测试该课程。
你需要测试你的时间课吗?我是对的吗?
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)
}
}