2016-04-05 6 views
7

XUnit को मैं अपने XUnit परीक्षा पद्धति से एक के लिए स्ट्रिंग की एक सरणी पास करना चाहते हैं, लेकिन जब मैं सिर्फ निम्न कार्य यह काम नहीं करता (सरणी + पैरामीटर तंत्र)पास सरणी परीक्षा पद्धति

[Theory] 
    [InlineData(new object[] { "2000-01-02", "2000-02-01" })] 
    public void TestSynchronizeMissionStaffing_PeriodNoMatch(string[] dateStrings) 

मैं इस तरह समस्या के समाधान कर सकते हैं:

[Theory] 
    [InlineData(0, new object[] { "2000-01-02", "2000-02-01" })] 
    public void TestSynchronizeMissionStaffing_PeriodNoMatch(int dummy, string[] dateStrings) 

लेकिन मैं वहाँ समस्या को हल करने के लिए कुछ बेहतर की उम्मीद कर रहा हूँ।

क्या आप मुझे बता सकते हैं?

+0

सरणी के अंदर स्ट्रिंग की संख्या कुछ भी हो सकती है। –

+0

यह 2018 है और अभी भी यह एकमात्र कामकाज है जो मेरे लिए काम करता है। वास्तव में xUnit – yair

+0

के लिए जारी करने के लिए एक अंतिम कार्यवाही ठीक करने के लिए अंतिम टिप्पणी को ठीक करना चाहिए। ऐसा लगता है कि वास्तव में [एक सीधा समाधान] है (https://stackoverflow.com/a/48100749/978502) – yair

उत्तर

4

यह एक सी # पैराम्स सुविधा है जिसमें एक सरणी का विस्तार किया जाता है। इसलिए XUnit अपने एक तर्क को यह इनपुट करने के लिए विफल रहता है, तो आप इस तरह, यह मजबूर करने के लिए सरणी डाली कर सकते हैं:

[InlineData((object)(new object[] { "2000-01-02", "2000-02-01" }))] यह भी देखना here

+0

मैंने कोशिश की थी और यह स्ट्रिंग के साथ काम नहीं करता है। –

+0

मेरे लिए काम करता है ... क्या आप एक गिस्ट/रेपो साझा करना चाहते हैं? –

+0

https://gist.github.com/anonymous/af6fc4095705228909de923e25ac0645 –

1

यह

[Theory] 
[InlineData(new object[] { new string[] { "2000-01-02", "2000-02-01" } })] 
public void TestSynchronizeMissionStaffing_PeriodNoMatch(string[] dateStrings) 

काम करना चाहिए जब यू एक वस्तु सरणी प्रारंभ की तरह आप सभी तत्वों को किया था यह एक वस्तु है पर, इसलिए जब आप पैरामीटर के रूप में यह वस्तु का एक पहला तत्व गुजरता स्ट्रिंग सरणी पारित करने के लिए कोशिश कर रहा है सरणी जो "2000-01-02" है।

2

विधि के string[] तर्क से पहले उपयोग params, और फिर आप InlineData विशेषता में एक string[] प्रारंभ करने में, बल्कि आप string शाब्दिक के परिवर्तनशील है, जिसके लिए संकलक एक बिट में शिकायत नहीं है इस्तेमाल कर सकते हैं की जरूरत नहीं होगी:

[Theory] 
    [InlineData("2000-01-02", "2000-02-01")] 
    public void TestSynchronizeMissionStaffing_PeriodNoMatch(params string[] dateStrings) 
संबंधित मुद्दे