Rhino Mock을 이용한 직렬 프로그램 유닛 테스트
2649 단어 단원 테스트
1. 인터페이스 ISerialPort
public interface ISerialPort
{
string PortName { get; }
int BaudRate { get; }
int DataBits { get; }
Parity Party { get; }
StopBits StopBits { get; }
int BytesToRead { get; }
bool IsOpen { get; }
void Open();
void Close();
string ReadLine();
int ReadByte();
int Read(ref byte[] buffer, int offset, int count);
string ReadTo(string p);
void Write(byte[] data, int offset, int count);
}
2. Rhino Mock
[TestMethod()]
public void ReadAlarmTest()
{
MockRepository mock = new MockRepository();
ISerialPort serialPort = mock.StrictMock<ISerialPort>();
VSerialPort target = new VSerialPort(serialPort);
string excepted ="1,1,1,";
string actual = string.Empty;
StringBuilder sb = new StringBuilder();
target.OnReceiveData += (alarmNo) =>{ sb.Append(alarmNo);sb.Append(',');};
using (mock.Record())
{
byte[] data = GetAlarmData();
byte[] outData = new byte[data.Length];
serialPort.Expect(p => p.ReadByte()).Return(0x21);
serialPort.Expect(p => p.Write(new byte[] {1,0x64,0x0D}, 0, 3));
serialPort.Expect(p => p.BytesToRead).Return(data.Length);
serialPort.Expect(p => p.Read(ref outData, 0, outData.Length)).OutRef(data).Return(data.Length);
serialPort.Expect(p => p.BytesToRead).Return(0);
}
target.ReadAlarm();
actual = sb.ToString();
Assert.AreEqual(excepted, actual);
}
static byte[] GetAlarmData()
{
List<byte> data = new List<byte>();
data.Add(1);
data.AddRange(Encoding.ASCII.GetBytes("ALARM MON #01=001 \r
$\r
"));
data.Add(1);
data.AddRange(Encoding.ASCII.GetBytes("ALARM MON #01=001 \r
$\r
"));
data.Add(1);
data.AddRange(Encoding.ASCII.GetBytes("ALARM MON #01=001 \r
$\r
"));
data.Add(1);
data.AddRange(Encoding.ASCII.GetBytes("$\r"));
data.Add(1);
data.AddRange(Encoding.ASCII.GetBytes("000\r
"));
return data.ToArray();
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[OutSystems] BDD Framework Client Side의 API 실행최근에 추가된 OutSystems의 Center Action 유닛 테스트를 위한 모듈, BDD Framework Client Side 이 모듈은 외부에서 자동으로 실행되는 BDD Framework와 동일한 REST ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.