• 首页>范文 > 范文
  • 测试代码怎么写

    1.应该如何编写测试代码

    产品类:classCMyClass{public:intAdd(inti,intj);CMyClass();virtual~CMyClass();private:intmAge;//年龄CStringmPhase;//年龄阶段,如少年,青年};建立对应的测试类CMyClassTester,为了节约编幅,只列出源文件的代码:voidCMyClassTester::CaseBegin(){//pObj是CMyClassTester类的成员变量,是被测试类的对象的指针,//为求简单,所有的测试类都可以用pObj命名被测试对象的指针。

    2.怎么写Java测试代码

    可以用main函数和JUnit来写测试代码。main是最早使用的,但是现在更流行的测试工具是JUnit。

    JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。

    下面是一些具体的编写测试代码的技巧或较好的实践方法:

    1. 不要用TestCase的构造函数初始化Fixture,而要用setUp()和tearDown()方法。

    2. 不要依赖或假定测试运行的顺序,因为JUnit利用Vector保存测试方法。所以不同的平台会按不同的顺序从Vector中取出测试方法。

    3. 避免编写有副作用的TestCase。例如:如果随后的测试依赖于某些特定的交易数据,就不要提交交易数据。简单的回滚就可以了。

    4. 当继承一个测试类时,记得调用父类的setUp()和tearDown()方法。

    5. 将测试代码和工作代码放在一起,一边同步编译和更新。(使用Ant中有支持junit的task.)

    6. 测试类和测试方法应该有一致的命名方案。如在工作类名前加上test从而形成测试类名。

    7. 确保测试与时间无关,不要依赖使用过期的数据进行测试。导致在随后的维护过程中很难重现测试。

    8. 如果你编写的软件面向国际市场,编写测试时要考虑国际化的因素。不要仅用母语的Locale进行测试。

    9. 尽可能地利用JUnit提供地assert/fail方法以及异常处理的方法,可以使代码更为简洁。

    10.测试要尽可能地小,执行速度快。

    11.不要硬性规定数据文件的路径。

    12.利用Junit 的自动异常处理书写简洁的测试代码

    事实上在Junit 中使用try-catch 来捕获异常是没有必要的,Junit 会自动捕获异常。那些没有被捕获的异常就被当成错误处理。

    13. 充分利用Junit 的assert/fail 方法

    assertSame()用来测试两个引用是否指向同一个对象

    assertEquals()用来测试两个对象是否相等

    14. 确保测试代码与时间无关

    15. 使用文档生成器做测试文档。

    3.如何编写可测试的代码

    1、勿将对象的构建与应用逻辑混合在一起。

    通常在写UT时,你需要实例化程序的一部分(理想情况是只有所测类),给对象一些输入,最后对对象的行为进行判定。为了能单独的实例化一个类,我们需要确保这个类不实例化其它的类(这些类不再实例化更多的类,以此类推),许多开发人员喜欢将new 操作符穿插在应用逻辑代码当中。

    为了使你的代码具备可测试性,你需要两种类。第一种是工厂类,这些类包含了大量的 new 操作符,它们负责为你的程序生产类,不做其它的事情。

    另一种是应用逻辑类,它不包含 new 操作符,只包含应用逻辑。事实上,测试的目的就是为了测试应用逻辑。

    当应用逻辑中去除了 new 操作符之后,对象的创建就变得很容易,于是我们可以在测试中替换这些依赖(Mocks)。

    4.什么是测试代码

    I Phoenix/Tandy300000 1. 由一系列代码(不含“00”和“FF”)到“FF”或“00”,则主板自检已通过,OK。

    2. 出“00”,且不变码,则为主板没有运行,查CPU坏否、CPU跳线、或CPU设置正确否、电源正常否、主板电池等处有否发霉?3. 如果您在CMOS中设置为不提示错,则遇到非致命性故障时,诊断卡不会停下来而接着往后走一直到“00”,解决方法为更改CMOS设置为提示所有错误再开机,这时若有非致命故障则停住,再根据代码排错。 同左 同左01 处理器测试1,处理器状态核实,如果测试失败,循环是无限的。

    试换CPU,查CPU跳线或CPU设置错否? 处理器寄存器的测试即将开始,非屏蔽中断即将停用。建议排除方法同左 CPU寄存器测试正在进行或者失灵。

    建议排除方法同左02 确定诊断的类型(正常或者制造)。如果键盘缓冲器含有数据就会失效。

    试查主板中与键盘相关电路及键盘本身。 使用非屏蔽中断;通过延迟开始。

    查主板和CPU。 CMOS写入/读出正在进行或者失灵。

    试查主板电池等。代码 Award AMI Phoenix/Tandy300003 清除8042键盘控制器,发出TEST-KBRD命令(AAH)。

    查键盘内部电路及软件。 通电延迟已完成 ROM BIOS检查部件正在进行或失灵。

    查主板BIOS芯片是否已插好或周边电路发霉。04 使8042键盘控制器复位,核实TESTKBRD。

    查主板中键盘接口电路。 键盘控制器软复位/通电测试。

    查主板中的键盘控制部分的电路。 可编程间隔计时器的测试正在进行或失灵。

    查主板中与 定时器相关的电路。05 如果不断重复制造测试1至5,可获得8042控制状态。

    查主板中键盘控制电路。 已确定软复位/通电;即将启动ROM.。

    查主板ROM芯片及其支持电路。 DMA初始页面寄存器读/写准备正在进行或失灵。

    查主板中与DMA有关的芯片及其外围电路。06 使电路片作初始准备,停用视频、奇偶性、DMA电路片,以及清除DMA电路片,所有页面寄存器和CMOS寄存器的工作。

    查主板中与DMA相关的电路。 已启动ROM计算ROM BIOS 检查总和,以及检查键盘缓冲器是否清除。

    查主板RCM芯片及其支持电路。 DMA初始页面寄存器读/写测试正在进行或失灵。

    查主板中与DMA有关芯片及其外围电路。07 处理器测试2,核实CPU寄存器的工作。

    查CPU是否插好,或CPU坏,或CPU跳线等设置有错否。 ROM BIOS检查总和正常,键盘缓冲器已清除,向键盘发出BAT(基本保证测试)命令。

    查主板中键盘接口电路或试更换键盘。 08 使CMOS计时器作初始准备,正常地更新计时器的循环。

    查主板中CMOS电路及芯片。 已向键盘发出BAT命令,即将写入BAT命令。

    查主板键盘控制电路及键盘本身 RAM更新检验正在进行或失灵。查主板的内存接口电路及内存槽和内存条。

    代码 Award AMI Phoenix/Tandy300009 EPROM检查总和且必须等于零才通过。查主板的BIOS电路及芯片。

    核实键盘的基本保证测试,接着核实键盘命令字节。查主板的键盘插座及试换键盘。

    第一个64K RAM测试正在进行。查找方法同上。

    0A 使视频接口作初始准备。查与显卡有关的电路。

    发出键盘命令字节代码,即将写入命令字节数据。试换键盘。

    第一个64K RAM芯片或数据线失灵,移位。同上。

    0B 测试8254芯片的DMA通道0。查主板中键盘控制电路及键盘中的控制电路。

    写入键盘控制器命令字节,即将发出引脚23和24的封锁/解锁命令。查键盘控制器电路。

    第一个64K RAM的奇/偶逻辑失灵。同上。

    0C 测试8254通道1。查键盘中的控制电路。

    键盘控制器引脚23,24已屏蔽/解锁;已发出NOP命令。试换键盘。

    第一个64K RAM的地址线故障。同上。

    0D 1、检查CPU速度是否与系统时钟匹配。查CPU跳级及CMOS中关于CPU参数的设置。

    2、检查控制芯片已编程值是否符合初设置。3、视频通道测试,如果失败,则鸣喇叭。

    已处理NOP命令;接着测试CMOS停开寄存器。查主板中控制CMOS的相关电路。

    第一个64K RAM的寄偶性失灵。同上。

    0E 测试CMOS停机字节。查主板中CMOS芯片及电路。

    CMOS状态寄存器读/写测试;将计算CMOS检查总和。查主板CMOS芯片及其支持电路和主板电池。

    初始化输入输出端口地址。查主板中与I/O相关的芯片及其外围电路,并注意插入的扩展卡等外部设备的I/O地址是否有冲突。

    代码 Award AMI Phoenix/Tandy30000F 测试扩展的CMOS。 已计算CMOS检查总和写入诊断字节;CMOS开始初始准备。

    查主板电池及CMOS芯片。 10 测试DMA通道0。

    查主板中DMA芯片及电路。 CMOS已作初始准备,CMOS状态寄存器即将为日期和时间作初始准备。

    查主板中CMOS控制电路。 第一个64K RAM第0位故障。

    查主板中内存管理电路及内存槽有否生锈?有杂物否?内存条坏否?11 测试DMA通道1。查主板中DMA芯片及该芯片周边电路。

    CMOS状态寄存器已作初始准备,即将停用DMA和中断控制器。查主板中与DMA和中断控制器有关芯片及其外围电路。

    第一个64K RAM第1位故障。同代码10。

    12 测试DMA页面寄存器。查主板中DMA芯片及该芯片的周边电路。

    停用DMA控制器1以及中断控制器1和2;即将视频显示器并使端口B作初始准备。

    5.JUnit代码测试是什么

    JUnit是Java进行单元测试的一个框架, 需要下载junit, 3.8版本和后来的4.0以后版本编写测试的方法略有不同,

    在3.8.2中需要导入junit.framework.中的类, 进行测试的类必须继承自TestCase类, 测试方法名称中需要含test字样, 可以在setup和teardown函数中管理一些每个测试函数都需要的资源比如数据库连接等,在测试函数中使用assert开头的函数来进行测试代码开发.以下是从junit文档中摘出的范例:

    import junit.framework.Test;

    import junit.framework.TestCase;

    import junit.framework.TestSuite;

    public class SimpleTest extends TestCase {

    protected int fValue1;

    protected int fValue2;

    protected void setUp() {

    fValue1= 2;

    fValue2= 3;

    }

    public static Test suite() {

    return new TestSuite(SimpleTest.class);

    }

    public void testAdd() {

    double result= fValue1 + fValue2;

    // forced failure result == 5

    assertTrue(result == 6);

    }

    public void testDivideByZero() {

    int zero= 0;

    int result= 8/zero;

    result++; // avoid warning for not using result

    }

    public void testEquals() {

    assertEquals(12, 12);

    assertEquals(12L, 12L);

    assertEquals(new Long(12), new Long(12));

    assertEquals("Size", 12, 13);

    assertEquals("Capacity", 12.0, 11.99, 0.0);

    }

    public static void main (String[] args) {

    junit.textui.TestRunner.run(suite());

    }

    }

    在4.0.2中的变化是:

    测试需要@org.junit.Test的Annotation标记,其他部分也使用了Annotation标记,setup和teardown使用@org.junit.Before 和@org.junit.After, 在eclipse3.1的环境中不支持4.0.2, 可以使用junit 4.0.2中提供的adapter类来帮助eclipse内置的junit发现新版本的测试函数

    测试代码怎么写

    发表评论

    登录后才能评论