سؤال

كل شيء يعمل بشكل جيد عندما تكون فئة اختبارات الوحدة جزءًا من المشروع الرئيسي (TestAccount).

كل مقال قرأته عن اختبار الوحدة يوصي بوضع الاختبارات في مشروع منفصل، لذلك...

  • تمت إضافة مشروع آخر (TestAccount.unittests) إلى الحل
  • نقل فئة اختبارات الوحدة (AccountTests.vb) إلى TestAccount.UnitTests
  • وإضافة مرجع في TestAccount.UnitTests إلى TestAccount (نسخ محلي = صحيح)

الحل يجمع دون أي تحذيرات.ومع ذلك، لا يمكن لـ nUnit الوصول إلى المشروع الرئيسي ويعطي الخطأ التالي لكل اختبار:

System.IO.FileNotFoundException :تعذر تحميل الملف أو التجميع "TestAccount, Version=1.0.0.0, Culture=محايد, PublicKeyToken=null" أو أحد تبعياته.لا يمكن للنظام العثور على الملف المحدد.

ما الخطأ الذي افعله؟

(كنت أواجه مشكلة مماثلة مع nunit.framework.dll حتى أضفته إلى GAC)

لقطة شاشة لمستكشف الحلول http://img440.imageshack.us/img440/4862/nunitsolutionexploreree3.jpg

فيجوال ستوديو 2005
نت 2.0
nUnit 2.4.8 (إصدار .NET 2.0)

[تحرير] أواجه هذه المشكلة فقط عند تشغيل nUnit من Visual Studio (كأمر خارجي).إذا قمت بتحميل وحدة التحكم nUnit بشكل مستقل، فإنها تعمل بشكل جيد.

[عدل] عمر:نعم، لدي إشارة إلى المشروع الآخر.هنا أ لقطة شاشة لمستكشف الحلول الخاص بي

أعتقد أنني قد أضطر فقط إلى تشغيل وحدة التحكم nUnit بشكل منفصل (بدلاً من تشغيل أدوات VS الخارجية).

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

المحلول

لقد وجدت ال تقرير الشوائب تقول أن Visual Studio يقوم بشكل غير صحيح بتوسيع وحدات الماكرو TargetPath وTargetDir.أنها تتوسع إلى الدليل obj\، وليس bin\

[تحديث] تمت مناقشة المشكلة/الحل بالفعل في دعم الاستوديو المرئي قسم من الوثائق.نظرًا لأن وحدات الماكرو "الهدف" تشير إلى obj\، فلا يمكنك استخدامها خارج الصندوق.انتهى بي الأمر باستخدام التعبير التالي في حقل الوسائط:

$(ProjectDir)bin/Debug/$(TargetName)$(TargetExt)

نصائح أخرى

قد يبدو هذا سخيفًا ولكني سأذهب إلى ما هو واضح، هل أعطيت مشروع الاختبار الخاص بك إشارة إلى المشروع الآخر؟

المشكلات الأخرى الشائعة في هذا النوع من المشكلات هي استخدام الفئات الداخلية التي لا يمكن الوصول إليها من مشروع/مساحة اسم أخرى.

تأكد أيضًا من أن مسار إخراج التجميع الخاص بك يتوافق مع ما تم إعداده في تكوين NUnit الخاص بك.لدي نفس الإعداد ولكن ليس من الضروري تعيين "نسخ محلي = صحيح"

هل المشكلة في عدم العثور على التطبيق نفسه أو أحد تبعيات التطبيق؟يمكنك محاولة استخدام FileMon أو Fusion Log Viewer لمعرفة ما الذي فشل بالضبط.من المحتمل أن المشكلة لا تكمن في العثور على التطبيق نفسه، بل في تحديد موقع تبعية أخرى.تأكد من تعيين Copy Local على True لأي تبعيات.

كيف بالضبط تبدأ واجهة المستخدم الرسومية NUnit داخل VisualStudio؟إذا كنت تقوم بتعيين "بدء برنامج خارجي" ضمن خصائص المشروع، فإنه يوفر لك خيار تحديد دليل العمل.قد تحتاج إلى تغيير هذا إلى موقع إنشاء ملف dll الخاص بالاختبار.

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