पर संग्रह कैसे पास करते हैं, मैं xUnit's InlineData के पैरामीटर के रूप में एक सूची, सरणी और/या seq का उपयोग करना चाहता हूं।एफ # में आप xUnit की इनलाइनडेटा विशेषता
सी # में मैं यह कर सकता:
using Xunit; //2.1.0
namespace CsTests
{
public class Tests
{
[Theory]
[InlineData(new[] {1, 2})]
public void GivenCollectionItMustPassItToTest(int[] coll)
{
Assert.Equal(coll, coll);
}
}
}
एफ # में मैं इस है:
namespace XunitTests
module Tests =
open Xunit //2.1.0
[<Theory>]
[<InlineData(8)>]
[<InlineData(42)>]
let ``given a value it must give it to the test`` (value : int) =
Assert.Equal(value, value)
[<Theory>]
[<InlineData([1; 2])>]
let ``given a list it should be able to pass it to the test``
(coll : int list) =
Assert.Equal<int list>(coll, coll)
[<Theory>]
[<InlineData([|3; 4|])>]
let ``given an array it should be able to pass it to the test``
(coll : int array) =
Assert.Equal<int array>(coll, coll)
एफ # कोड निम्नलिखित निर्माण त्रुटियों दे:
Library1.fs (13, 16): यह मान्य निरंतर अभिव्यक्ति या कस्टम विशेषता मान
नहीं हैLibrary1.fs (18, 16): यह एक वैध निरंतर अभिव्यक्ति या कस्टम नहीं है विशेषता मान
2 और 3 परीक्षण सिद्धांतों की चर्चा करते हुए।
क्या इनलाइनडेटा विशेषता में संग्रह में पास करने के लिए xUnit का उपयोग करना संभव है?
धन्यवाद जेम्स, यदि ऐसा है तो लोगों को आम तौर पर एफ # में परीक्षण डेटा के लिए संग्रह की आवश्यकता कैसे होती है? –
मुझे सुझाव दिया गया था कि यह http://stackoverflow.com/questions/29349152/cannot-create-list-literal-in-f का डुप्लिकेट है। हालांकि यह सवाल विशेष रूप से एफ # में एक शाब्दिक सूची बनाने के लिए है (और जवाब है: आप नहीं कर सकते हैं)। यह सवाल है "मैं xUnit का उपयोग कैसे कर सकता हूं और परीक्षण डेटा की सूची में कैसे पास कर सकता हूं"। ऐसा लगता है कि @bytebuster का एक व्यावहारिक उत्तर है। –
आप सूचियों का उपयोग नहीं कर सकते हैं, लेकिन आपको सी # जैसे सरणी का उपयोग करने में सक्षम होना चाहिए, लेकिन मैं इसे संकलित करने में कभी सक्षम नहीं हूं। सौभाग्य से, यह एक बार जब आप खोजते हैं तो यह अप्रासंगिक हो जाता है [FsCheck.Xunit] (https://fscheck.github.io/FsCheck/RunningTests.html)। –