كيف يمكنك استخدام "الخارجية" ملفات التكوين (أيمع configSource) مع MSTest وحدة اختبار المشروع ؟

StackOverflow https://stackoverflow.com/questions/152866

  •  02-07-2019
  •  | 
  •  

سؤال

عن البساطة ، عموما أنا انقسام الكثير من التكوين (أيمحتويات التطبيق.التكوين على شبكة الإنترنت.التكوين) إلى منفصلة .ملفات التكوين ، ومن ثم الرجوع لهم من ملف التكوين باستخدام 'configSource' السمة.على سبيل المثال:

<appSettings configSource="appSettings.config"/>

ثم وضع جميع أزواج مفتاح/قيمة في هذا appSettings.config بدلا من وجود هذا في الخط الرئيسي في ملف التكوين:

<appSettings>
    <add key="FirstKey" value="FirstValue"/>
    <add key="SecondKey" value="SecondValue"/>
    ...
</appSettings>

هذا عادة ما يعمل كبيرة مع التطبيق نفسه ، لكني واجهت مشاكل عند محاولة كتابة وحدة الاختبارات التي لسبب ما تحتاج إلى الحصول على بعض القيمة من قسم التكوين التي تم تخزينها في أحد هذه الملفات الخارجية.(أنا أفهم أن معظم هذه likley تعتبر "اختبارات التكامل" ، كما أنها تعتمد على نظام التكوين ، لدي "نقية وحدة الاختبارات" أيضا ، ولكن هذه ليست المشكلة.أنا حقا نتطلع إلى اختبار هذا التكوين هذه القيم يتم استرداد بشكل صحيح و أثر السلوك في الطريق الصحيح).

بسبب كيف MSTest يجمع نسخ الإخراج إلى غموض يبحث المجلدات التي تختلف عن كل اختبار تشغيل (بدلا من 'بن' المجلد مثل تظن) ، فإنه لا يبدو أن تكون قادرة على العثور على تلك الملفات الخارجية في حين أن الاختبارات المنفذة.لقد حاولت العبث مع وظيفة بناء إجراءات لجعل هذا العمل ولكن مع عدم وجود الحظ.هل هناك طريقة لجعل هذه الملفات الخارجية نسخها في الصحيحة المجلد الإخراج في تشغيل الوقت ؟

هل كانت مفيدة؟

المحلول

وجدت أنه:

إذا قمت بتحرير تشغيل اختبار التكوين (بالنقر المزدوج .testrunconfig الملف الذي يوضع في حل البنود' الحل مجلد عند إضافة وحدة جديدة الاختبار), يمكنك الحصول على اختبار تشغيل في مربع الحوار تكوين.يوجد هناك قسم يسمى 'نشر' حيث يمكنك تحديد ملفات أو مجلدات كاملة من أي مكان في الحل الذي يمكن نسخها مع تجميع الجمعيات في وقت التشغيل إلى المجلد الصحيح.

في هذه الطريقة, أنا الآن في الواقع مجرد تحديد أكثر من التكوين في مجموعة واحدة من الخارجية .ملفات التكوين ويكون لهم نسخها تلقائيا عند تشغيل كل اختبار.

نصائح أخرى

اختبار تشغيل تكوينات هي محرجا بعض الشيء عند محاولة تشغيل الاختبارات خارج من Visual Studio.

على سطر الأوامر التنفيذ باستخدام MSTest تصبح مرهقة جدا للحفاظ على "نظيفة".هم أيضا "العالمي" إلى حل حتى الملفات الخارجية سيتم نسخ لكل اختبار المشروع.

أنا أفضل بكثير DeploymentItem السمة.

[TestMethod]
[DeploymentItem(@"test_data.file")]
public void FooTest()
{...}

يجعل اختبارات مستقلة .testrunconfig الملفات.

  1. أكتب هذا في سلسلة_أحرف_الاتصال.أولا سلسلة_أحرف_الاتصال.التكوين ليس موجودا.

    <"connectionStrings configSource="سلسلة_اتصال.التكوين"> "

  2. افتح موجه الأوامر (CMD) في مدير متميز.

  3. إنشاء الارتباطات الرمزية مع اسم سلسلة_أحرف_الاتصال.التكوين في bin/debug مجلد.

C:\Windows\Systems32> mklink "C:\Link To Folder\....\ConnectionString.config" "C:\Users\Name\Original Folder\.....\...\Secure ConnectionString.config"

وأخيرا فإنه يخلق سلسلة_أحرف_الاتصال تكوين الملف في الموقع المحدد.و يعمل بنجاح.

enter image description here

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top