Cod*_*ake 1 delphi tdd unit-testing
我是单元测试的新手.我不知道是否值得对下面的代码进行单元测试.这是用Delphi编写的示例方法:
function TCoreAudio.CreateAudioClient: IAudioClient;
var
MMDeviceEnumerator: IMMDeviceEnumerator;
MMDevice: IMMDevice;
MixFormat: PWaveFormatEx;
AudioClient: IAudioClient;
HR: HResult;
begin
Result := nil;
if CheckWin32Version(6, 0) then // The Core Audio APIs were introduced in Windows Vista.
begin
HR := GetInstance().CoCreateInstance(CLSID_MMDeviceEnumerator, nil, CLSCTX_ALL,
IMMDeviceEnumerator, MMDeviceEnumerator);
if Failed(HR) then
Exit;
HR := MMDeviceEnumerator.GetDefaultAudioEndpoint(eRender, eConsole, MMDevice);
if Failed(HR) then
Exit;
HR := MMDevice.Activate(IAudioClient, CLSCTX_ALL, nil, AudioClient);
if Failed(HR) then
Exit;
HR := AudioClient.GetMixFormat(MixFormat);
if Failed(HR) then
Exit;
HR := AudioClient.Initialize(AUDCLNT_SHAREMODE_SHARED, 0, 0, 0, MixFormat, nil);
CoTaskMemFree(MixFormat);
if Failed(HR) then
Exit;
Result := AudioClient;
end;
end;
Run Code Online (Sandbox Code Playgroud)
这种方法值得单元测试吗?如果是,它需要测试哪些部分?
谢谢.
您面临的问题是如何测试它而不是它是否应该进行测试.
这是许多COM调用的包装,它可能由于许多不同的原因而失败.那些可能的COM故障条件是测试此例程的最重要方面.但是你不能轻易激起COM例程失败.为了测试这些COM故障模式,你需要使用一个模拟器,这是你从哪里来的一个很大的飞跃.
| 归档时间: |
|
| 查看次数: |
894 次 |
| 最近记录: |