set val(chan) Channel/WirelessChannel ;# channel type set val(prop) Propagation/TwoRayGround ;# radio-propagation model set val(netif) Phy/WirelessPhy ;# network interface type set val(mac) Mac/802_11 ;# MAC type set val(ifq) Queue/DropTail/PriQueue ;# interface queue type set val(ll) LL ;# link layer type set val(ant) Antenna/OmniAntenna ;# antenna model set val(ifqlen) 50 ;# max packet in ifq set val(rp) AODV ;# routing protocol set val(x) 782 ;# X dimension of topography set val(y) 545 ;# Y dimension of topography set val(stop) 10.0 ;# time of simulation end set val(ni) 3 ;#number of interface set val(nn) 3 ;# number of mobilenodes for {set i 0} {$i < $val(ni)} {incr i} { set chan_($i) [new $val(chan)] } create-god [expr $val(nn)*$val(ni)] #Create a ns simulator set ns_ [new Simulator] #Setup topography object set topo [new Topography] $topo load_flatgrid $val(x) $val(y) #create-god $val(nn) #Open the NS trace file set tracefd [open multi-interface.tr w] #$ns_ use-newtrace $ns_ trace-all $tracefd #Open the NAM trace file set namfile [open multi-interface.nam w] $ns_ namtrace-all $namfile $ns_ namtrace-all-wireless $namfile $val(x) $val(y) #=================================== # Mobile node parameter setup #=================================== $ns_ node-config -adhocRouting $val(rp) / -llType $val(ll) / -macType $val(mac) / -ifqType $val(ifq) / -ifqLen $val(ifqlen) / -antType $val(ant) / -propType $val(prop) / -phyType $val(netif) / -channel $chan_(0) / -topoInstance $topo / -agentTrace ON / -routerTrace ON / -macTrace OFF / -movementTrace OFF / -ifNum $val(ni) #=================================== # Nodes Definition #=================================== #Create 3 nodes $ns_ change-numifs 1 $ns_ add-channel 0 $chan_(0) set n0 [$ns_ node] $n0 set X_ 150 $n0 set Y_ 445 $n0 set Z_ 0.0 $ns_ initial_node_pos $n0 20 $ns_ change-numifs 2 $ns_ add-channel 0 $chan_(0) $ns_ add-channel 1 $chan_(2) set n1 [$ns_ node] $n1 set X_ 382 $n1 set Y_ 443 $n1 set Z_ 0.0 $ns_ initial_node_pos $n1 20 $ns_ change-numifs 1 $ns_ add-channel 0 $chan_(2) set n2 [$ns_ node] $n2 set X_ 500 $n2 set Y_ 447 $n2 set Z_ 0.0 $ns_ initial_node_pos $n2 20 #=================================== # Agents Definition #=================================== #Setup a TCP connection set tcp0 [new Agent/TCP] $ns_ attach-agent $n0 $tcp0 set sink0 [new Agent/TCPSink] $ns_ attach-agent $n2 $sink0 $ns_ connect $tcp0 $sink0 $tcp0 set packetSize_ 1500 #=================================== # Applications Definition #=================================== #Setup a FTP Application over TCP connection set ftp1 [new Application/FTP] $ftp1 attach-agent $tcp0 $ns_ at 1.0 "$ftp1 start" $ns_ at 10.0 "$ftp1 stop" #=================================== # Termination #=================================== #Define a 'finish' procedure proc finish {} { global ns_ tracefd namfile $ns_ flush-trace close $tracefd close $namfile exit 0 } for {set i 0} {$i < $val(nn) } { incr i } { $ns_ at $val(stop) "/$n$i reset" } $ns_ at $val(stop) "$ns_ nam-end-wireless $val(stop)" $ns_ at $val(stop) "finish" $ns_ at $val(stop) "puts /"done/" ; $ns_ halt" $ns_ run
22.13.5.测试检测 测试任务检测哪些类是通过检查编译测试类的测试类。默认情况下它会扫描所有.calss文件.可以自定义包含/排除哪些类需不要要被扫描.所使用不同的测试框架(JUnit/ TestNG)时测试类检测使用不同的标准。 当使用JUnit,我们扫描的JUnit3和JUnit4的测试类。如果任一下列条件匹配,类被认为是一个JUnit测试类: 类或父类集成自TestCase或Groovy
22.13.2.调试 测试任务提供了Test.getDebug()属性,可使JVM等待调试器附加到5005端口后在进行调试. 通过调用--debug-JVM任务选项,这也可以启用调试任务(since Gradle1.12)。
程序测试是一种找到缺陷的有效方式,但是它对证明没有缺陷却无能为力。 Edsger W. Dijkstra, “The Humble Programmer” (1972) 作为软件工程质量保障体系的重要一环,测试是应该引起我们充分注意并重视的事情。前面说过,Rust 语言的设计集成了最近十多年中总结出来的大量最佳工程实践,而对测试的原生集成也正体现了这一点。下面来看 Rust 是怎么设计测试特性的。
import counter from './counter'; describe('counter reducers', () => { it('should handle initial state', () => {
下面的示例会为您测试Redux应用程序打下坚实的基础。
就像 会编译代码并运行生成的二进制文件一样,cargo test 在测试模式下编译代码并运行生成的测试二进制文件。可以指定命令行参数来改变 cargo test 的默认行为。例如,cargo test 生成的二进制文件的默认行为是并行的运行所有测试,并捕获测试运行过程中产生的输出避免他们被显示出来,使得阅读测试结果相关的内容变得更容易。 这些选项的一部分可以传递给 cargo test,而另一些则
测试用来验证非测试的代码是否按照期望的方式运行的 Rust 函数。测试函数体通常执行如下三种操作: 设置任何所需的数据或状态 运行需要测试的代码 断言其结果是我们所期望的 让我们看看 Rust 提供的专门用来编写测试的功能:test 属性、一些宏和 should_panic 属性。 作为最简单例子,Rust 中的测试就是一个带有 test 属性注解的函数。属性(attribute)是关于 Rust
22.13.7.测试报告 测试任务默认生成以下结果. 一份HTML测试报告 一个与Ant的JUnit测试报告任务兼容的XML.这个格式与许多其他服务兼容,如CI serves 结果是有效的二进制,测试任务会从这些二进制结果生成其他结果。 有一个独立的TestReport任务类型会根据一些Test任务实例生成的二进制源码生成一个HTML报告.使用这种测试类型,需要定义一个destinationDir