2015-09-25 15 views
6

Tôi muốn AutoFixture tạo hai số nguyên và cho số thứ hai, tôi không muốn nó là 0 hoặc số được tạo trước đó. Có cách nào để nói với AutoFixture để tôn vinh rằng "yêu cầu".Làm thế nào để có được AutoFixture tạo một số nguyên là> 0, và không phải là một số khác?

Nhìn vào RandomNumericSequenceGenerator, tôi trông giống như lower limit is 1, vì vậy tôi có thể không phải chỉ định yêu cầu đầu tiên. Tiếp theo, tôi đã nhìn vào tùy chọn "gieo hạt", nhưng theo mặc định trong this answer, nó sẽ không được sử dụng cho một số, theo mặc định.

Có điều gì tôi đang xem ở đây không?

+0

Bạn có sử dụng đơn giản-AutoFixture hoặc AutoFixture.Xunit/NUnit? –

+0

Thật không may, đồng bằng AutoFixture sử dụng MSTest. Tại sao? Và Xunit sẽ giúp đỡ như thế nào? – Ties

+0

Nó ít lò hơi với AutoFixture.Xunit. Xem [answer] (http://stackoverflow.com/a/32782299/467754) bên dưới. –

Trả lời

7

Dưới đây là một cách để làm điều này với AutoFixture đồng bằng:

[Fact] 
public void GenerateTwoDistinctNonZeroIntegersWithAutoFixture() 
{ 
    var fixture = new Fixture(); 
    var generator = fixture.Create<Generator<int>>(); 

    var numbers = generator.Where(x => x != 0).Distinct().Take(2); 
    // -> 72, 117 
} 

Và đây là một cách để làm điều này với AutoFixture.Xunit:

[Theory, AutoData] 
public void GenerateTwoDistinctNonZeroIntegersWithAutoFixtureXunit(
    Generator<int> generator) 
{ 
    var numbers = generator.Where(x => x != 0).Distinct().Take(2); 
    // -> 72, 117 
} 
+3

Điều này sẽ làm việc, nhưng không phải là hành vi được yêu cầu * hành vi * mặc định của AutoFixture? –

+1

OMG, thực sự. Tôi đã bị lừa khi lần đầu đọc câu hỏi gốc. [This] (http://stackoverflow.com/questions/32781002/how-to-get-autofixture-create-an-integer-that-is-0-and-not-another-number/32782299?noredirect=1# comment53403678_32781002) phải là câu trả lời, như được bình luận bởi @AlexanderW. Nắm bắt tốt! Cảm ơn bạn đã chỉ ra rằng. –

+0

@NikosBaxevanis Bạn nói đúng, và tôi đã không chấp nhận câu trả lời của bạn. Tôi không thể chấp nhận bình luận của Mark, vì đó là một bình luận, tất nhiên. Có lẽ Mark có thể "quảng cáo" bình luận của anh ấy, vì vậy tôi có thể chấp nhận nó;) – Ties

Các vấn đề liên quan