2010-07-16 36 views
-1

如何編寫一個程序來測試另一個程序/腳本?如何編寫一個程序來驗證另一個程序/腳本?

我需要測試一個ruby腳本,它是一個echo服務器;我應該如何編寫一個程序來驗證echo服務器腳本的正確工作?

+0

目前還不清楚你在問什麼:你需要一個連接到回顯服務器的客戶端,打印一些東西,讀取一些東西,比較被寫入的內容。 – philant 2010-07-16 10:15:26

+0

是的,我得到了迴應服務器的工作,並用telnet手動測試過,事情是我需要自動化測試過程來驗證回顯服務器顯示的是telnet客戶端發送的內容,所以這需要寫成script/prog另一種語言或紅寶石本身。 – 2010-07-16 10:17:45

+0

在Python中有一個'telnet'庫,我認爲Ruby也是一個。如果您能夠使用telnet進行測試,則應該直接使用該庫來自動執行該操作。 – 2010-08-12 10:24:39

回答

1

你可以使用像這樣的TCP回聲服務器啓動:

require "socket" 

hostname = "localhost" 
port = 2000 

s = TCPSocket.open(hostname, port) 

s.print "something\n"  # was "something" 

line = s.gets 
line.chop! 

if line == "something" 
    puts "echo test passed" 
else 
    puts "echo test failed: rcvd [#{line}]\n" 
end 

s.close 

根據什麼樣的測試,你需要,你可以成長的測試客戶端,使用幾個插座,多線程,測試框架如Test ::單位,黃瓜......


編輯:它適用於以下回聲服務器,我只是一個「\ n」添加到客戶端的數據

require 'socket' 

port = 2000 

server = TCPServer.open(port) 
loop {       
    client = server.accept 
    data = client.gets 
    client.puts data 
    client.close 
} 
+0

哦,對不起,這不起作用,我試過這個客戶端爲我的回聲服務器。 但這個概念是理想的。 – 2010-07-17 12:24:30

+0

好吧,它可以與上面的服務器一起工作,我只需要向交換的字符串添加'\ n'。 – philant 2010-07-19 10:37:48

0

Ruby有一個名爲Test::Unit的內置單元測試框架。不過,我傾向於選擇使用BDD框架。理想情況下,BDDers喜歡在實際代碼之前編寫測試,但您可以在事實之後編寫測試。

相關問題