Ruby中的TestUnit测试框架

本文介绍了一个使用Ruby实现的歌曲和歌单系统,包括基类Song及其子类KaraokeSong的定义,以及SongList类用于管理歌曲列表。通过TestSongList测试用例验证了SongList的功能,如添加、删除歌曲等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先看代码:

Song.rb

  1. class Song
  2.   def initialize(name, artist, duration)
  3.     @name     = name
  4.     @artist   = artist
  5.     @duration = duration
  6.   end
  7.   
  8.   def to_s
  9.     "Song: #@name--@artist (#@duration)"
  10.   end
  11. end
  12. class KaraokeSong < Song
  13.   def initialize(name, artist, duration, lyrics)
  14.     super(name, artist, duration)
  15.     @lyrics = lyrics
  16.   end
  17.   
  18.   def to_s
  19.     super + " [#@lyrics]"
  20.   end
  21. end
  22. #song = KaraokeSong.new("shenbin", "fnl", 260, "And now, the...")
  23. #puts song.to_s
  24. #puts song.inspect

SongList.rb

  1. class SongList
  2.   
  3.   def initialize
  4.     @songs = Array.new
  5.   end
  6.   
  7.   def append(song)
  8.     @songs.push(song)
  9.     self
  10.   end
  11.   
  12.   def delete_first
  13.     @songs.shift
  14.   end
  15.   
  16.   def delete_last
  17.     @songs.pop
  18.   end
  19.   
  20.   def [](index)
  21.     @songs[index]
  22.   end
  23.   
  24. end

Test_song_list.rb

  1. require "test/unit"
  2. require "Song.rb"
  3. require "SongList.rb"
  4. class TestSongList < Test::Unit::TestCase
  5.   def test_delete
  6.     list = SongList.new
  7.     s1 = Song.new('t1''a1', 1)
  8.     s2 = Song.new('t2''a2', 2)
  9.     s3 = Song.new('t3''a3', 3)
  10.     s4 = Song.new('t4''a4', 4)
  11.     
  12.     list.append(s1).append(s2).append(s3).append(s4)
  13.     
  14.     assert_equal(s1, list[0])
  15.     assert_equal(s3, list[2])
  16.     assert_nil(list[4])
  17.     
  18.     assert_equal(s1, list.delete_first)
  19.     assert_equal(s2, list.delete_first)
  20.     assert_equal(s4, list.delete_last)
  21.     assert_equal(s3, list.delete_last)
  22.     assert_nil(list.delete_last)
  23.   end
  24. end

运行后输出:

Loaded suite Test_song_list
Started
.
Finished in 0.0 seconds.

1 tests, 8 assertions, 0 failures, 0 errors

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值