根据autofixture cheatsheet,我应该能够以连续的方式自动生成数字(1,2,3等)。
我正在使用最新版本(3.34.0)并使用与备忘单显示完全相同的代码,并且不断获取随机数,而不是1,2,3等。我错过了什么吗?作弊表是否过时了?
我的代码:
NSLog(@"Playing sound with sender tag: %i", [sender tag]);
switch ([sender tag]) {
case 1:
{
[_audioPlayer1 play];
break;
}
case 2:
{
[_audioPlayer2 play];
break;
}
default:
{
break;
}
}
修改
谢谢托马斯 - 我在github上添加了一个问题:
答案 0 :(得分:5)
在AutoFixture 3中,numbers are created using a random algorithm。但是,可以通过使用Fixture
自定义NumericSequenceCustomization
实例来重新应用2.x行为:
var fixture = new Fixture();
fixture.Customize(
new NumericSequenceCustomization());
var i1 = fixture.Create<int>();
var i2 = fixture.Create<int>();
var i3 = fixture.Create<int>();
// Prints -> 1
// Prints -> 2
// Prints -> 3
var l1 = fixture.Create<long>();
var l2 = fixture.Create<long>();
var l3 = fixture.Create<long>();
// Prints -> 4
// Prints -> 5
// Prints -> 6
var f1 = fixture.Create<float>();
var f2 = fixture.Create<float>();
var f3 = fixture.Create<float>();
// Prints -> 7
// Prints -> 8
// Prints -> 9
NumericSequenceCustomization
定义为:
internal class NumericSequenceCustomization : ICustomization
{
public void Customize(IFixture fixture)
{
fixture.Customizations.Add(new NumericSequenceGenerator());
}
}
要创建每种类型唯一的数字,请改用NumericSequencePerTypeCustomization
:
var fixture = new Fixture();
fixture.Customize(
new NumericSequencePerTypeCustomization());
var i1 = fixture.Create<int>();
var i2 = fixture.Create<int>();
var i3 = fixture.Create<int>();
// Prints -> 1
// Prints -> 2
// Prints -> 3
var l1 = fixture.Create<long>();
var l2 = fixture.Create<long>();
var l3 = fixture.Create<long>();
// Prints -> 1
// Prints -> 2
// Prints -> 3
var f1 = fixture.Create<float>();
var f2 = fixture.Create<float>();
var f3 = fixture.Create<float>();
// Prints -> 1
// Prints -> 2
// Prints -> 3