나는 아이폰 SDK를 실험하고 TDD ala Dr. Nic의 rbiPhoneTest 프로젝트를하고있다. 나는 iPhone/Cocoa 용 테스트 프레임 워크를 사용하여 얼마나 많은 사람들이 성공했는지 궁금합니다. 더 중요한 것은 독점적 인 바이너리 요청/응답 프로토콜을 가장 효과적으로 어서 트하는 방법을 알고 싶습니다. 아이디어는 네트워크를 통해 바이너리 요청을 보내고 바이너리 응답을 수신하는 것입니다. 요청 및 응답은 byte and'ing 및 or'ing을 사용하여 작성됩니다. 내 요청을 테스트하는 데 황금색 사본 패턴을 사용하고 있습니다. 여기 내가 지금까지 가지고있는 것이있다. 내가 객관적 C와 루비를 btoh에 새로 온 사람으로 웃지 마십시오 :아이폰 네이티브 애플 리케이션을위한 테스트 주도 디자인
require File.dirname(__FILE__) + '/test_helper'
require 'fileutils'
require 'io'
require "MyModel.bundle"
OSX::ns_import :MyModel
module MyTestExtensions
def is_absolute_path(path)
return /^\/.*/.match(path)
end
def parent_directory(file)
dir = file
if(! is_absolute_path(dir))
dir = File.expand_path(dir)
end
dir = File.dirname(dir)
assert is_absolute_path(dir), "Expecting an absolute path with #{dir}"
return dir
end
def assert_NSData_contains_bytes_from_file(file, data)
assert_not_nil data, "Data should not be nil."
assert data.bytes, "data should have bytes"
data.length.times { |i|
expected = file.getc
assert_not_nil expected, "Expected only #{i} bytes. Actual data contains more."
actual = data.bytes.int8_at(i)
assert_equal expected, actual, "Bytes should be equal at offset #{i} expected #{expected.chr} but was #{actual.chr}"
}
expected = file.getc
raise AssertionFailedError, "Expecting #{expected.chr} at offset #{data.length}" unless expected == nil
end
end
class TestMyModel < Test::Unit::TestCase
include OSX
include MyTestExtensions
def this_files_dir
return parent_directory(__FILE__)
end
def setup
@expectedReq = File.new("#{this_files_dir}/ExpectedMyReq")
# @expectedReq = File.new("#{this_files_dir}/hello.txt")
assert File.exist?("#{this_files_dir}/ExpectedMyReq"), "The file [#{@expectedReq.path}] should exist."
end
def test_my_model_class_exists
MyModel
end
def test_can_init_instance
assert MyModel.instancesRespondToSelector(:init), "MyModel Should define :init"
end
def test_my_model_can_request_my_data
myModel = MyModel.alloc.init
data = myModel.requestMyData 'Some query text'
assert_NSData_contains_bytes_from_file @expectedReq, data
end
end
나는 이것이 내 정적 클래스를 테스트하는 데 정말 잘 작동한다는 것에 동의한다. http://code.google.com/p/google-toolbox-for-mac/wiki/iPhoneUnitTesting –