محاولة استخدام الشامات مع Nunit. الحصول على "الشامات يتطلب اختبارات لتكون عملية صك"

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

  •  26-09-2019
  •  | 
  •  

سؤال

أحاول استخدام الشامات مع Nunit وأحصل على الخطأ التالي "تتطلب الشامات اختبارات لتكون عملية مُجهز". أنا أيضًا أستخدم Nunit Visual داخل Visual Studio 2008 للحصول على هذا العمل. أي مساعدة مرحب بها.

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

المحلول

هذا ما فعلته من أجل جعل الشامات تعمل مع Nunit:

  1. الاستيلاء على الأرشيف في C:\Program Files (x86)\Microsoft Moles\Documentation\moles.samples.zip واستخراج Moles مجلد الحل.

  2. بناء NUnit مشروع في Visual Studio (2008) للإصدار.

  3. انسخ ملفات الإخراج Microsoft.Moles.NUnit.dll و Microsoft.Moles.NUnit.xml من عند ...\Moles\NUnit\bin\Release\ ل C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\addins\. أظن أن هذه الخطوة لإعادة تجميع Addin Nunit بدلاً من استخدام الخطوة القادمة من التنزيل والتثبيت كانت نقطة الحل الفعلية.

  4. في مشروع اختبار VS الخاص بك ، تأكد من إضافة إشارة إلى C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\addins\Microsoft.Moles.NUnit.dll لقد قمت بنسخها للتو.

  5. في فئة اختبار VS الخاصة بك ، حدد طريقة اختبار مع [Moled] السمة (سيتطلب هذا using Microsoft.Moles.Framework.NUnit). كبديل ، لف تطبيقه ضمن using (MolesContext.Create()) { ... } الكتلة (سيتطلب هذا using Microsoft.Moles.Framework).

  6. من سطر الأوامر ، استدعاء Nunit Test Runner من خلال عداء Moles مع ما يلي: "C:\Program Files (x86)\Microsoft Moles\bin\moles.runner.exe" "path\to\your\test\assembly.dll" /r:"C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\nunit-console.exe" /x86 /args:"/domain=None"

لقد وجدت تلك السمة [moled لا اعمل مع [testcase (...)] ويعيدك إلى سيناريو الخطأ غير الموثوق. بدلا من ذلك using (MolesContext.Create()) يعمل Block في هذه الحالة أيضًا.

بمجرد أن تجد أن كل شيء يعمل ، قد تفكر في تشغيل Moles Runner كأداة خارجية داخل Visual Studio. يتبع التعليمات في تشغيل الشامات باستخدام Nunit Console من Visual Studio, ، تحديث الحجج كما في الخطوة 6.

يرجى ملاحظة أن هذا كان على جهاز Windows 7 64bit ، مع Nunit 2.5.9 و Microsoft PEX و Moles (x86) 0.94.51006.1. فكر في المجلدات الفعلية الخاصة بك للمسارات والإصدارات المختلفة وما إلى ذلك.

نصائح أخرى

أنا أستخدم نسخة Moles 0.94.51023.0.

بقدر ما أدرك ، تحتاج إلى إضافة السمة أدناه إلى طريقة الاختبار الخاصة بك. أنا أستخدم إطار اختبار Visual Studio ، لست متأكدًا مما إذا كان الأمر هو نفسه مع Nunit ، ET. آل.

[HostType("Moles")]

لقد قرأت أيضًا أنه يمكنك إضافة ملف [Moled] اعتبارها إلى طريقة الاختبار ، لكن ذلك لم يكن متاحًا لي ، ولم أخوض في السبب ، على افتراض أنها وثائق قديمة - والتي يبدو أن هناك الكثير من الشامات.

تحديث: حسب دليل المرجع الشامات ، ص. 26 ، Moledattribute على طريقة الاختبار هو السبيل للذهاب مع Nunit. يجب عليك تسجيل Microsoft.moles.nunit.dll التجميع مع nunit من خلال نسخه إلى نونيت بن/addins مجلد.

ثم ستضيف [Moled] تنسب إلى طريقة الاختبار.

[Test]
[Moled]
public void MyTest() {
  ...
}

خلاف ذلك ، يمكنك إضافة كتلة تستخدم لالتفاف طريقة الاختبار على النحو التالي:

[Test]
public void MyTest() {
  using (MolesContext()) {
  ...
  }
}

بالإضافة إلى إضافة سمة [HostType ("moles")] ، تحتاج إلى لف عداء الاختبار مع عداء Moles. علي سبيل المثال:

moles.runner.exe MyAssembly.dll /r:nunit-console.exe

من المحتمل أن يكون عداء Moles موجودًا في C: Program Files Microsoft Moles Bin. للاستخدام ، تنفيذ:

moles.runner.exe help

يحتوي Superjos على الإجابة الأكثر صحة واستخدام Addin "اختبار مستمر" يمكنك الحصول على Visual Studio لتشغيل عداء Moles من خلال Nunit Console Runner مع ملف الدُفعة هذا:

@echo off

rem Uses the Microsoft Moles runner and fires off the NUnit console runner so you can use Moles with NUnit.
rem This batch file is intended to be run from the Continuous Testing plugin in Visual Studio.
rem However, it can be used to run nunit tests from anyhere with Moles as long as the first parameter
rem is the assembly to be tested.  All other parameters are passed to NUnit.

set ASSEMBLY=%1
set MOLESPATH="c:\Program Files\Microsoft Moles\bin\moles.runner.exe"
set NUNITPATH="C:\Program Files\NUnit 2.5.10\bin\net-2.0\nunit-console.exe"
shift

if [%ASSEMBLY%]==[] goto HelpScreen
if [%1]==[] goto RunAlone
if [%2]==[] goto RunParams1 
if [%3]==[] goto RunParams2 
if [%4]==[] goto RunParams3 
if [%5]==[] goto RunParams4 
if [%6]==[] goto RunParams5 
if [%7]==[] goto RunParams6 
if [%8]==[] goto RunParams7 
if [%9]==[] goto RunParams8 
goto RunParams9
:HelpScreen
echo "The parameters are the same as NUnit Console runner with the exception that:
echo "   1) Only one assembly is supported and it must come first"
echo "   2) Only 9 extra parameters may be specified"
echo
%NUNITPATH% /?
exit 1
:RunAlone
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY%
goto ExitRunner
:RunParams1
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1
goto ExitRunner
:RunParams2
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2
goto ExitRunner
:RunParams3
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3
goto ExitRunner
:RunParams4
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4
goto ExitRunner
:RunParams5
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5
goto ExitRunner
:RunParams6
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6
goto ExitRunner
:RunParams7
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6 /args:%7
goto ExitRunner
:RunParams8
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6 /args:%7 /args:%8
goto ExitRunner
:RunParams9
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6 /args:%7 /args:%8 /args:%9
goto ExitRunner
:ExitRunner

ما عليك سوى تحديث المسارات إلى الإصدار الخاص بك من حزم البرامج. يمكن استخدام هذا أيضًا لتشغيله من برامج أخرى إذا كان لديك الوقت لتحديثه.

لا يمكنك تشغيل MS Moles مع Nunit من داخل Visual Studio. يجب عليك إما استخدام MSTEST (اختبارات وحدة الاستوديو البصرية) للقيام بذلك أو يمكنك إجراء اختبارات NUNIT الخاصة بك باستخدام الشامات من سطر الأوامر. الدليل المرجعي.

بديل ممكن: إذا كان يناسب احتياجاتك ، فيمكنك استخدام جاليو منصة الأتمتة لتشغيل جميع أنواع أطر الاختبار (في حالتك NUNIT و MSTEST) جنبًا إلى جنب ...

هول! توماس

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