New->Directory
新建一个test目录,再右键点击设置环境变量,选择Mark Directory->Test Sources Roo
t即可正常情况
边界情况:一般容易遗漏边界情况,而且容易出错
异常情况 ->依据所出现的异常情况,就应该针对此问题修改源代码,直至测试成功。
下载完成后,在IDEA中新建空类,鼠标单击类名会出现一个灯泡状图标,单击图标或按Alt + Enter,在弹出的菜单中选择Create Test
选择创建JUnit3的测试用例
C:\Users\13015\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-1\171.4073.35\lib\junit.jar
。charAt返回该位置上的字符
indexOf返回第一次出现的指定子字符串在该字符串中的索引
String类:String的值是不可变的,因此每次对String操作都会生成新的String对象,浪费大量内存空间。为理解这个,我从书上摘取了一个小栗子~a最后指向56EF,但最后12AB和56EF地址中的数据仍然存在,因此String的操作都是改变赋值地址而不是改变值操作。
String a = "你好"
a = "boy"
a = "12.97"
StringBuffer是可变类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量,非常人性化。
StringBuffer buf=new StringBuffer(); //分配默认长16字节的字符缓冲区
StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区
StringBuffer buf=new StringBuffer("this is a test")//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区。
// Sever Classer
abstract class Data{
public abstract void DisplayValue();
}
class Integer extends Data{
int value;
Integer(){
value = 100;
}
public void DisplayValue(){
System.out.println(value);
}
}
class Double extends Data{
double value;
Double(){
value = 5.0;
}
public void DisplayValue(){
System.out.println(value);
}
}
// Pattern Classes
abstract class Factory{
public abstract Data CreateDataObject();
}
class IntFactory extends Factory{
public Data CreateDataObject(){
return new Integer();
}
}
class DoubleFactory extends Factory{
public Data CreateDataObject(){
return new Double();
}
}
//Client classes
class Document {
Data pd;
Document(Factory pf){
pd = pf.CreateDataObject();
}
public void DisplayData(){
pd.DisplayValue();
}
}
public class MyDoc {
static Document d;
static Document f;
public static void main(String[] args) {
d = new Document(new IntFactory());
d.DisplayData();
f = new Document(new DoubleFactory());
f.DisplayData();
}
}
// 定义属性并生成getter,setter
double RealPart;
double ImagePart;
// 定义构造函数
public Complex()
public Complex(double R,double I)
//Override Object
public boolean equals(Object obj)
public String toString()
// 定义公有方法:加减乘除
Complex ComplexAdd(Complex a)
Complex ComplexSub(Complex a)
Complex ComplexMulti(Complex a)
Complex ComplexDiv(Complex a)
public class MyComplex{
//定义属性并生成getter,setter
double RealPart;
double ImagePart;
public double getRealPart(){
return RealPart;
}
public double getImagePart(){
return ImagePart;
}
//定义构造函数
public MyComplex(){}
public MyComplex(double R,double I){
RealPart = R;
ImagePart = I;
}
//Override Object
public boolean equals(Object obj){
if(this == obj){
return true;
}
if(!(obj instanceof MyComplex)) {
return false;
}
MyComplex complex = (MyComplex) obj;
if(complex.RealPart != ((MyComplex) obj).RealPart) {
return false;
}
if(complex.ImagePart != ((MyComplex) obj).ImagePart) {
return false;
}
return true;
}
public String toString(){
String s = new String();
if(ImagePart>0)
s = getRealPart()+"+"+getImagePart()+"i";
if(ImagePart==0)
s = getRealPart()+"";
if(ImagePart<0)
s = getImagePart()+getImagePart()+"i";
if(RealPart==0)
s = getImagePart()+"i";
if(ImagePart==0&&RealPart==0)
s = "0";
return s;
}
//定义公有方法:加减乘除
public MyComplex ComplexAdd(MyComplex a){
return new MyComplex(RealPart+a.RealPart,ImagePart+a.ImagePart);
}
public MyComplex ComplexSub(MyComplex a){
return new MyComplex(RealPart-a.RealPart,ImagePart-a.ImagePart);
}
public MyComplex ComplexMulti(MyComplex a){
return new MyComplex(RealPart*a.RealPart,ImagePart*a.ImagePart);
}
public MyComplex ComplexDiv(MyComplex a){
return new MyComplex((RealPart * a.ImagePart + ImagePart * a.RealPart) / (a.ImagePart * a.ImagePart + a.RealPart * a.RealPart), (ImagePart * a.ImagePart + RealPart * a.RealPart) / (a.RealPart * a.RealPart + a.RealPart * a.RealPart));
}
}
import junit.framework.TestCase;
import org.junit.Test;
public class MyComplexTest extends TestCase {
MyComplex a = new MyComplex(2.0,4.0);
MyComplex b = new MyComplex(0.0,-3.0);
MyComplex c = new MyComplex(-5.0,0.0);
@Test
public void testgetRealpart(){
assertEquals(2.0,a.getRealPart());
assertEquals(0.0,b.getRealPart());
assertEquals(-5.0,c.getRealPart());
}
@Test
public void testgetImagePart(){
assertEquals(4.0,a.getImagePart());
assertEquals(-3.0,b.getImagePart());
assertEquals(0.0,c.getImagePart());
}
@Test
public void testMyComplexAdd(){
String q = a.ComplexAdd(b).toString();
String w = b.ComplexAdd(c).toString();
String e = c.ComplexAdd(a).toString();
assertEquals("2.0+1.0i",q);
assertEquals("-6.0i",w);
assertEquals("-3.0+4.0i",e);
}
@Test
public void testMyComplexSub(){
String r = a.ComplexSub(b).toString();
String t = b.ComplexSub(c).toString();
String y = c.ComplexSub(a).toString();
assertEquals("2.0+7.0i",r);
assertEquals("-6.0i",t);
assertEquals("-8.0i",y);
}
@Test
public void testMyComplexMulti(){
String u = a.ComplexMulti(b).toString();
String i = b.ComplexMulti(c).toString();
String o = c.ComplexMulti(a).toString();
assertEquals("-12.0i",u);
assertEquals("0",i);
assertEquals("-10.0",o);
}
@Test
public void testMyComplexDiv(){
String p = c.ComplexDiv(a).toString();
assertEquals("-2.5i",p);
}
@Test
public void testtoString(){
assertEquals("2.0+4.0i",a.toString());
assertEquals("-3.0i",b.toString());
assertEquals("-5.0",c.toString());
}
}
Q: junit 使用org.junit不存在,点到代码中红色的部分显示:Cannot resolve symbol ‘junit‘
A:File -> Project Struct... -> Libraies -> 点击绿色的加号 -> Java -> 找到 IDEA 安装路径下的 Lib 中的junit-4.12 ->点击OK
Q:在对append进行测试的时候,明明期望的值和实际值相同,但还是测试失败
A:将StringBuffer转为字符串再比较,即可得出答案
public void testappend() throws Exception{
String q,w,e;
a = a.append("abc");
b = b.append("abc");
c = c.append(ch,2,3);
q = a.toString();
w = b.toString();
e = c.toString();
assertEquals("StringBufferabc",q);
assertEquals("StringBufferStringBufferabc",w);
assertEquals("StringBufferStringBufferStringBufferc12",e);
}
2018-2019-20175205实验二面向对象程序设计《Java开发环境的熟悉》实验报告
原文:https://www.cnblogs.com/orii/p/10695488.html