سؤال

أحاول دمج تشغيل Fitnesse الاختبارات من MSBuild im بلدي ليلا بناء على TFS.

في محاولة لجعله الذاتي الواردة وأود أن تبدأ seleniumRC الخادم فقط عند الحاجة إليه من اللياقة البدنية.

لقد رأيت أن هناك "سطر الأوامر اساسيا" ولكن هو مكتوب في جاوة يمكنني استخدام هذا ؟

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

المحلول

أعتقد أنك قد تكون قادرة على.يمكنك الاتصال بأي عملية بسهولة في MSBuild باستخدام المهمة.ولكن المشكلة مع ذلك هو أن exec المهمة سوف تنتظر Selinium عملية لإنهاء قبل مستمرة ، وهي ليست bahaviour تريد.تريد تشغيل العملية ، والحفاظ على تشغيله خلال بناء ثم هدمه الخاص بك بناء التشطيبات.

ولذلك أعتقد وربما كنت سوف تحتاج إلى إنشاء مخصص MSBuild المهمة للقيام بذلك.انظر المشاركة التالية على سبيل المثال من المهام التي شخص ما خلقت هذا سوف تعمل بشكل غير متزامن إرجاع التحكم إلى بناء النصي:

http://blog.eleutian.com/2007/03/01/AsyncExecMsBuildTask.aspx

و على سبيل المثال استدعاء برنامج Java من MSBuild (ولكن في هذه الحالة بشكل متزامن) نلقي نظرة على بلدي المهمة التي المكالمات النمل من MSBuild هنا

http://teamprise.com/products/build/

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

Process process = Process.GetProcessById(ProcessId);
process.Kill();

أن قال, سوف تحتاج إلى توخي الحذر لضمان أن تقتل المهمة دائما أعدم في MSBuild عن طريق التأكد من إدراجها خلال خطأ مسارات الخ في البناء.وربما كنت يمكن أن تجعل الأمور قليلا أكثر مرونة من خلال جعل السيلينيوم RC بداية مهمة البحث عن أخرى seleniumRC عمليات قتل منهم قبل بدء واحدة جديدة - بهذه الطريقة إذا كانت العملية لم يتم إغلاق بشكل صحيح لسبب ما ، فإنه لن يستمر حتى بناء.

على أي حال - جوابي يبدو مثل الكثير من العمل لذلك نأمل شخص آخر سوف يأتي مع طريقة أسهل.كنت قد تكون قادرة على خلق seleniumRC عملية في اختبار جناح بدء من FitNesse الاختبارات وقتل في جناح هدم ، أو قد تكون قادرا على كتابة مخصص المهمة التي يمتد FitNesse عداء المهام وحرائق حتى seleiniumRC asynronously قبل تشغيل عملية الاختبار ثم يقتل بعد ذلك.

حظا سعيدا ،

مارتن.

نصائح أخرى

شكرا على الردود الخاصة بك!

هذا هو كيف فعلت حتى الآن.

أنا قدمت صالح اساسيا (بسيطة جدا) التي تبدأ العملية مع الموردة سطر الأوامر, في حالتي startSelenium.الخفافيش.المباراة ترجع ProcessID لذا يمكن تخزين في fitnesse السياق وإغلاق تلك الدورة في وقت لاحق.

لا يمكن الآن جعل SuiteSetUp الصفحة في fitnesse الاختبار الذي يبدو مثل هذا.

|RunCommandFixture|

|فلكس|RunCommand?|

|C:\Projects...\startSeleniumRC.bat|>>seleniumprocess|

و SuiteTearDown مثل هذا

|RunCommandFixture|

|ProcessID|StopCommand?| |<

الذي يعمل بالنسبة لي.لا السيلينيوم الصليب الأحمر يبدأ بطلب من fitnesse الاختبار.

ماذا عن كتابة بسيطة .صافي التطبيق الذي يفعل عملية.تبدأ("selenumRC فلكس") التي يحصل تديرها الخاص بك بناء النص ؟

إذا لم تكن بعيدة جدا أسفل السيلينيوم الطريق ؛ قد أقترح عليك أن ننظر مماثلة .صافي المتصفح أتمتة الأدوات ؛ على وجه التحديد WatiN أو ArtOfTest.إن "مداخن" في هذه تماما .صافي حتى الحصول على تشغيلها على أجهزة مختلفة هو أسهل بكثير.

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