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; } }