实验内容
1.初步掌握单元测试和TDD
2.理解并掌握面向对象三要素:封装、继承、多态
3.初步掌握UML建模
4.熟悉S.O.L.I.D原则
5.了解设计模式
实验内容与运行结果
(一)单元测试
参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST
参考http://www.cnblogs.com/rocedu/p/6736847.html
在学习了IDEA简易教程之后,参考了其他同学的博客,直接对最终的代码进行了测试。
MyUtil.java代码:
public class MyUtil{??? public static String percentage2fivegrade(int grade){??????? //如果成绩小于0,转成“错误”??????? if ((grade < 0))??????????? return "错误";??????????? //如果成绩小于60,转成“不及格”??????? else if (grade < 60)??????????? return "不及格";???????//如果成绩在60与70之间,转成“及格”??????? else if (grade < 70)??????????? return "及格";???? ?//如果成绩在70与80之间,转成“中等”??????? else if (grade < 80)??????????? return "中等";??????? //如果成绩在80与90之间,转成“良好”??????? else if (grade < 90)??????????? return "良好";????????? //如果成绩在90与100之间,转成“优秀”??????? else if (grade <=100)??????????? return "优秀";??????????? //如果成绩大于100,转成“错误”??????? else??????????? return "错误";??? } }
测试代码:
public class MyUtilTest {??? public static void main(String[] args) {??????? //测试边界情况??????? if(MyUtil.percentage2fivegrade(0) != "不及格")??????????? System.out.println("test failed 1!");??????? else if(MyUtil.percentage2fivegrade(60) != "及格")??????????? System.out.println("test failed 2!");??????? else if(MyUtil.percentage2fivegrade(70) != "中等")??????????? System.out.println("test failed 3!");?????? else if(MyUtil.percentage2fivegrade(80) != "良好")??????????? System.out.println("test failed 4!");??????? else if(MyUtil.percentage2fivegrade(90) != "优秀")??????????? System.out.println("test failed 5!");??????? else if(MyUtil.percentage2fivegrade(100) != "优秀")??????????? System.out.println("test failed 6!");??????? else??????????? System.out.println("test passed!");??? } }
截图:
(二)TDD(Test Driven Devlopment, 测试驱动开发)
参考http://www.cnblogs.com/rocedu/p/6736847.html
参考http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST
问题1:
在进行安装JunitGenerator V2.0的时候出现了IDEA没能搜索到插件的情况
解决的方法是:
(1)参考了https://blog.csdn.net/qq_31908651/article/details/82498950
(2)直接点击链接下载了插件
http://plugins.jetbrains.com/pluginManager/?action=download&id=org.intellij.plugins.junitgen&build=IU-162.2228.15&uuid=6a6cb9f5-4107-46d7-9b1c-d8205218a73b
(3)从本地安装插件
(4)安装成功
待测试的StringBufferDemo代码:
public class StringBufferDemo{ StringBuffer buffer = new StringBuffer(); public StringBufferDemo(StringBuffer buffer){ this.buffer = buffer; } public Character charAt(int i){ return buffer.charAt(i); } public int capacity(){ return buffer.capacity(); } public int length(){ return buffer.length(); } public int indexOf(String buf) { return buffer.indexOf(buf); } }
测试代码:
import junit.framework.TestCase; import org.junit.Test; public class StringBufferDemoTest extends TestCase { StringBuffer a1 = new StringBuffer("StringBuffer"); StringBuffer a2 = new StringBuffer("StringBufferStringBuffer"); StringBuffer a3 = new StringBuffer("StringBuffer used by 20175312"); @Test public void testCharAt() throws Exception//验证是否是整个字符串中的第x个字符 { assertEquals('S',a1.charAt(0)); assertEquals('t',a2.charAt(13)); assertEquals('b',a3.charAt(18)); } @Test public void testcapacity() throws Exception{//验证容量 assertEquals(28,a1.capacity()); assertEquals(40,a2.capacity()); assertEquals(45,a3.capacity()); } @Test public void testlength() throws Exception{//验证字符串的长度 assertEquals(12,a1.length()); assertEquals(24,a2.length()); assertEquals(29,a3.length()); } @Test public void testindexOf(){//验证位置 assertEquals(6,a1.indexOf("Buff")); assertEquals(1,a2.indexOf("tring")); assertEquals(25,a3.indexOf("5312")); } }
截图:
(三)设计模式初步
对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式
用自己的学号%6进行取余运算,根据结果进行代码扩充:
0: 让系统支持Byte类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
1: 让系统支持Short类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
2: 让系统支持Boolean类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
3: 让系统支持Long类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
4: 让系统支持Float类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
5: 让系统支持Double类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
我的学号是7号,7%6 =1,所以做short类
// Server Classes abstract class Data { abstract public void DisplayValue(); } class Integer extends Data { int value; Integer() { value=100; } @Override public void DisplayValue(){ System.out.println (value); } } class Short extends Data { int value; Short() { value=5307; } @Override public void DisplayValue(){ System.out.println (value); } } abstract class Factory { abstract public Data CreateDataObject(); } class IntFactory extends Factory { @Override public Data CreateDataObject(){ return new Integer(); } } class ShortFactory extends Factory { @Override public Data CreateDataObject(){ return new Short(); } } class Document { Data pd; Document(Factory pf){ pd = pf.CreateDataObject(); } public void DisplayData(){ pd.DisplayValue(); } } public class MyDoc { static Document d; public static void main(String[] args) { d = new Document(new IntFactory()); d.DisplayData(); d = new Document(new ShortFactory()); d.DisplayData(); } }
(四)任务:以TDD的方式开发一个复数类Complex
要求如下:
// 定义属性并生成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)
(五)UML