gpt4 book ai didi

ios - 测试AVPlayer声音

转载 作者:行者123 更新时间:2023-12-01 22:46:52 25 4
gpt4 key购买 nike

我有一个基于声音的应用程序,当我编写测试用例以测试声音是否正常时

在测试用例中运行时,声音不会播放,而在实际应用中运行时,声音会播放。

为什么在测试用例中不起作用?

在我的SoundManager中
我有一个名为AVPlayer * audioPlayer的属性

这就是我用来播放声音的东西

-(void)play:(AVAudioPlayer *)player afterDelay:(NSTimeInterval )delay{
if(self.audioPlayer){
[self.audioPlayer stop];
}
self.audioPlayer = player;
[self.audioPlayer setEnableRate:YES];
[self.audioPlayer prepareToPlay];

[self.audioPlayer setNumberOfLoops:0];
[self.audioPlayer setVolume:0.03];
[self.audioPlayer setRate:1.155f];
[self.audioPlayer performSelector:@selector(play) withObject:nil afterDelay:delay];

}

请非常清楚:声音在真实应用中确实起作用
我想知道为什么它对测试案例不起作用:

这是我的测试用例:
-(void)testPlayAllSounds{

Prefs *prefs = [[Prefs alloc]init];
SoundManager *soundManager = [SoundManager initWithSoundSettingProvider:prefs];
NSTimeInterval delay =3;
NSTimeInterval interval = 3.0;
NSError *error;
AVPlayer *player = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"test" ofType:@"mp3"] error:&error];
if(!error){
[soundManager play:player afterDelay:delay];
}else{
LogInfo(@"error playing sound");
}

}

最佳答案

我是说这只是个评论,但我想我的声誉还不够,

我要说,您需要异步思考才能使此测试成功。
您或者需要一些GCD信号灯,或者包括一个异步测试库并使用它。
initWithContents可能需要一些时间才能完成,到那时您的测试就结束了。
您正在添加延迟。那会剥离其他线程。

关于ios - 测试AVPlayer声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23593316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com