我想测试这个方法:ArrayList<File> songs;
public void playRandomSong()
{
Random random = new Random();
int iNextSong = random.nextInt(songs.size());
File songToPlay = songs.get(iNextSong);
if (mediaPlayer != null && mediaPlayer.isPlaying())
mediaPlayer.stop();
mediaPlayer = new MediaPlayerImpl(songToPlay, new WhenDone());
mediaPlayer.play();
currentSong = songToPlay;
}
我是这样想的:多次运行该方法,看看它是否多次返回其中一个元素。但是我该如何用代码编写呢?
最佳答案
Random 不保证不会两次返回相同的值...
所以你不能测试“看看它是否多次返回一个元素”
如果您需要,您必须围绕Random
实现一个Set
,但要注意生日悖论...
我认为您有 2 个选择:
1 :您可以尝试为您的Random
播种,这样您就可以预测序列...
2 : 删除 Random 并使用 [Collections.shuffle][1]
随机播放 arrayList
对于选项 1,您必须更改方法的签名。
使用选项 2,您还将每首歌曲播放一次。
关于java - 测试产生随机结果的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13315437/