1安装java ant
2写helloworld
class helloworld
{
public static void main(String[] args){
System.out.println("fire");
}
}
javac helloword.java java helloworld
3 写一个空的测试类
public class StudentTest extends junit.framework.TestCase
{
}
编辑:javac -classpath:junit.jar StudentTest
执行:java -cp .;junit.jar junit.awtui.TestRunner StudentTest
可以看到junit测试窗口提示,说明测试执行成功。
有同学已经注意到了:第一次编译的时候路径寻址用-classpath 第二次的时候用-cp cp是让虚拟机也可以找到相关的类
方便运行时随时加载。经测试:如果去掉“.;”或者将cp修改成classpath,都找不到相关的类
测试方法的名字约束: 方法必须声明为public,方法返回值必须为void 方法名字前缀小写test 方法不能接受任何参数
4 添加一个测试方法
public class StudentTest extends junit.framework.TestCase
{
public void testCreate(){
System.out.print("create");
new Student("mixian");
}
}
直接编译,发现报错:
错误提示^符号 在错误的下方,表明java编译器不知道 Student代表什么,现在我们创建Student.java类
5 如果以后再建立几个类的话,不可能一个一个去编译,所以需要批处理
javac -classpath junit.jar *.java java -cp .;junit.jar junit.awtui.TestRunner StudentTest
6 建立student.java
public class StudentTest extends junit.framework.TestCase
{
public void testCreate(){
System.out.print("create");
Student student = new Student("mixian");
}
}
class Student
{
Student(String username){
}
}
Student student = new Student("mixian");
当程序执行到这里的时候:
首先执行new Student("mixian"); 在内存中创建一个student对象,java虚拟机会记住student对象的实际内存地址,然后将地址赋值给左边的Student对象的一个引用。然后执行相应的构造函数 这个引用在test方法执行期内生存。是局部变量。
总结:
/* 重构前的
public class StudentTest extends junit.framework.TestCase
{
public void testCreate(){
Student student = new Student("mixian");
String username = student.getUsername();
assertEquals("mixian",username);
Student student2 = new Student("longquan");
String username2 = student2.getUsername();
assertEquals("longquan",username2);
}
}
*/
public class StudentTest extends junit.framework.TestCase
{
final String firstname ="mixian";
final String sendname ="longquan";
public void testCreate(){
Student student = new Student(firstname);
//变量不是私有的 可以直接赋值 很危险,为了保护成员变量 所以要加上set get 方法 和private
//student.name="xiubo";
assertEquals(firstname,student.getName());
Student student2 = new Student(sendname);
assertEquals(sendname,student2.getName());
}
}
/* 重构前
class Student
{
String username;
Student(String name){
username = name;
}
String getUsername(){
return username;
}
}
*/
class Student
{
private String name;
Student(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public void setName(String name){
this.name=name;
}
}