سؤال

أنا على التوالي Watin الاختبارات مع xUnit على CC.Net تحت نظام التشغيل Windows Server 2003.

لدي الكثير من التجارب أن كل تشغيل غرامة على تطوير صناديق مع TestDriven.Net و على الملقم مع xUnit واجهة التطبيق.ومع ذلك ، عندما CC.Net تشغيل الاختبارات (كجزء من MSBuild المهمة) وظيفة

ie.ContainsText("some text to find");

لم ترجع القيمة المتوقعة.غيرها من الوظائف و الخصائص على أي كائن يبدو أن تعمل بشكل جيد:زر(...).انقر فوق(), مربع نص(...).القيمة الخ.

أنا على علم أن حساب خدمة احتياجات "السماح للخدمة بالتفاعل مع سطح المكتب".

لقد حاولت تشغيل CC الخدمة بموجب النظام المحلي و المسؤول المحلي.حساب المسؤول توقف فقط و لم يظهر إلى الانتهاء من تشغيل الاختبارات (على الرغم من أنه لا إنشاء مثيل iexplorer.exe العملية.

هذا مشكلة مع permissioning على الملقم أو قد تركت شيئا من التكوين ؟

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

المحلول

ونحن انتهى لتوه من معرفة كيفية التغلب على هذه المشكلة. لدينا الآن اختبارات watin تعمل من خلال CruiseControl.net تشغيل كخدمة.

ونحن بحاجة إلى خدمة cc.net لدينا لتشغيل مستخدم معين من أجل الوصول إلى هذا الموقع نحن اختبار بسبب الطريقة التي يتم بها تعيين الامنية. منذ تشغيل الخدمة كمستخدم مجال معطل على علامة التبويب أمان خدمة 'تسمح للمستخدم بالتفاعل مع سطح المكتب "مربع. نحن لا نريد لمجرد تشغيل عملية القيادة من تسجيل دخولك دائما في المستخدم لأننا نريد عملية لبدء تلقائيا على إعادة التشغيل. الآن لدينا أحسب

والطريقة التي عملت حول هذه كانت أولا عن طريق إنشاء ملف دفعي لاستدعاء nunit-console.exe. يتم تمرير المعلمات إلى nunit-console.exe إلى ملف دفعي كمعلمات التي ثم يمر المعلمات على. والثاني، والأخير، سطر من ملف دفعة يعود إرجاع رمز العودة من nunit-console.exe. الملف الدفعي يبدو أساسا مثل هذا:

 nunit-console.exe %1 %2
 exit /b %ERRORLEVEL%

وعدد من المعلمات التي تمر عبر لnunit تعزية قد تكون مختلفة على أساس الاحتياجات الخاصة بك.

ونحن نستخدم نانت ليبني لدينا، لذلك فإننا استبدال مهمة نانت الموجودة لدينا للاتصال nunit-وحدة مع مهمة عمال التنفيذ التي تدعو CMD.EXE التي تبدو مثل هذا:

   <exec program="cmd.exe" failonerror="true">
      <arg value="/interactive" />
      <arg value="/c" />
      <arg value="[batch file name]" />
      <arg value="[parameter one value]" />
      <arg value="[parameter two value" />
   </exec>

وأنا لا أعرف ما نفس المهمة قد تبدو في msbuild ولكن أنا متأكد من أنك يمكن أن ننظر إليه. النتيجة النهائية هي في الأساس الأمر الذي يبدو مثل هذا:

   cmd.exe /interactive /c [batch file name] [parameter one value] [parameter two value]

وبدلا من ذلك، يمكنك استخدام نانت ومجرد إنشاء مهام نانت msbuld لاستدعاء الطبيب يبني القائمة.

وو'/ التفاعلية "المعلمة إلى CMD.EXE هي المفتاح، فإنه يدير ملف دفعي على العملية التي لديه الإذن للتفاعل مع سطح المكتب. أنا في الواقع ليست إيجابية إذا كنت بحاجة المعلمة '/ ج'، لكنه يعمل كما هو. نحن ما زلنا نقول nunit لتسجيل النتائج على نفس ملف xml ذلك مهمة دمج لدينا لم تكن في حاجة إلى تغيير والإبلاغ عن نتائج الاختبار لمراقبة الرحلات البحرية وعمل عظيم.

نصائح أخرى

وWatin تعتمد على التشغيل الآلي متصفح للقيام بذلك هو العمل، وبالتالي فإن "السماح للخدمة بالتفاعل مع سطح المكتب" الإعداد.

وعندما يحاول Watin لتشغيله سوف تفعل ذلك تحت حساب خدمة يست سطح المكتب الذي تم تسجيل دخولك حاليا، ونظرا لأنه سيكون لدوران IE فمن الممكن أن الحساب الذي تقوم بتشغيل Watin تحت لم بدأت فعلا IE نفسه قبل وأنها يمكن أن تكون جالسا في تسلسل بدء التشغيل الأولي لشركة آي إي حيث يطالب الإعدادات وكل ما هوو-ههه.

وأيضا، إذا لم تخني، وتتفاعل مع وضع سطح المكتب يتطلب تسجيل الدخول النشط للتفاعل معها. إذا تم تسجيل دخول أي أحد في وقت هناك سيكون شيئا لخدمة التحدث الى وانها لن إنشاء سطح مكتب جديد بالنسبة لك.

لقد تلقيت بضعة اقتراحات حاليا:

  1. محاولة تشغيل الاختبارات مع msbuild على الملقم.
  2. حاول بدء تشغيل CC.Net من وحدة التحكم بدلا من الخدمة.

سوف تحرير مع النتائج.

تحرير:

النتائج:

  1. أنا قادرة تماما على تشغيل الاختبارات مع msbuild على الملقم.
  2. عند تشغيل ccnet.exe من سطر الأوامر الاختبارات تسير على ما يرام.ومع ذلك ، عندما الإعداد مهمة لبدء ccnet.exe من سطر الأوامر عند بدء التشغيل الاختبارات تعليق و تنتهي أبدا (في نهاية المطاف توقيت الخروج).

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

ولا يدري لماذا تميزت أن الجواب الصحيح مع مثال إكسيك صالح ..

وأنا أعاد إلى:

و<exec> <baseDirectory>WatinTestDir</baseDirectory> <executable>cmd.exe</executable> <buildArgs>/interactive /C nunit-launcher.bat Test.dll /xml:../Test-results.xml</buildArgs> <buildTimeoutSeconds>2400</buildTimeoutSeconds> </exec>

والذي يدير .. ولكن فشل كل نفس ..

وتابعت هذا المثال، ولكنه لم يساعدني، للأسف. وبما أن هذا السؤال هو حول نانت، وأنا أستخدم msbuild، لقد فتحت سؤال منفصل لهذا <وأ href = "https://stackoverflow.com/questions/19652107/selenium-times-out-when-run-in -ccnet كما هو وجود خدمة "> في هنا .

وهذا هو حل جيد لكنه لا يحل المشكلة هو أنت تحاول تحميل الملفات باستخدام Watin.

HTTP: //blog.kikicode. كوم / 2011/10 / تشغيل مصغر، دفعة الملفات في task.html

وهذا عمل بالنسبة لي. والمسألة التي موجه كمد تم حظر IE من الخروج. عندما كنت قادرا على تقليل كمد موجه أنه سمح IE للحصول على التركيز وتحميل الملفات وكنت بحاجة في عملية بلدي.

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