Pregunta

Tengo varias pruebas unitarias escritas con NUnit que están llamando a los comandos de selenio. Tengo 2 win2k3 cajas de servidor de configuración, uno se está ejecutando centro de la rejilla de selenio junto con 2 selenio RC. La otra caja está ejecutando 5 selenio RC. Todos ellos están registrados con el cubo como ejecutar Firefox en Windows (mantenerlo simple). En mi método de configuración de prueba de unidad que lo tengo conectado al nombre de host del centro de operaciones en el puerto 4444.

Al ejecutar las pruebas, que sólo se ejecutan secuencialmente (como se esperaba). He hecho un montón de lectura en la hoja de ruta de NUnit y cómo se están disparando para las capacidades de pruebas paralelas. He visto un montón de consejos para el uso de PNUnit en el ínterin. Sin embargo, esto parece vencer por completo el propósito de la cuadrícula selenio.

¿Alguno de ustedes pruebas paralelas aplicado con éxito usando C # / NUnit conectado a una configuración de cuadrícula selenio? Si es así, indique los detalles.

Estoy en una pérdida completa de cómo esta se / puede funcionar utilizando NUnit como existe ahora (estoy usando la versión 2.9.3)

¿Fue útil?

Solución

Desafortunadamente NUnit no se puede ejecutar pruebas en paralelo, por lo que tendrá que utilizar otro corredor para archivar todas las ventajas de las pruebas en paralelo con selenio cuadrícula.

I utilizando corredor de Galio para mis pruebas en C # y tienen ejemplos aquí:

proyecto sobre c # con pruebas runned en paralelo: http://code.google.com/p/design-of-selenium-tests-for-asp-net/

La descripción: http: // slmoloch .blogspot.com / 2009/12 / diseño-de-selenio-tests-para-aspnet_19.html

Gallio corredor de prueba: http://www.gallio.org/

Otros consejos

También hay PNUnit , vale la pena echar un vistazo a, I no han probado todavía para las pruebas en paralelo.

NCrunch ( http://www.ncrunch.net/ ) es digno de mirar - que tiene la opción de procesamiento distribuido como parte de una construcción y una de sus principales características es de pruebas paralelas.

Mediante el uso de selenio en combinación con la rejilla biblioteca paralelo tarea de .NET y la clase DynamicObject puede ejecutar la misma prueba en múltiples nodos selenio cuadrícula (varios navegadores) al mismo tiempo.

http: // Blog .dmbcllc.com / marcha-selenio-en-paralelo con-cualquier-net-unidad-prueba-herramienta /

Galio es obsoleta hoy en día por lo que podría pegarse a la solución NUnit.

Desde la versión 3.7 NUnit permite ejecutar pruebas en paralelo. Antes de eso, era posible hacer eso en un nivel accesorio pero en 3.7+ puede incluso para las pruebas en uno TestFixute. Véase mi siguiente ejemplo para demostrar la forma en que se podría lograr.

using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;

namespace ConsoleApp1
{
    [TestFixture]
    public class Dummy
    {
        static TestCaseData Case(int i)
            => new TestCaseData(TimeSpan.FromSeconds(2)).SetName($"Case {i}");

        public static IEnumerable<TestCaseData> Cases()
            => Enumerable.Range(1, 5).Select(Case);

        [TestCaseSource(nameof(Cases)), Parallelizable(ParallelScope.Children)]
        public void ItShouldSleep(TimeSpan t)
            => Thread.Sleep(t);


        static TestCaseData Case2(int i)
            => new TestCaseData(TimeSpan.FromSeconds(2)).SetName($"Case2 {i}");

        public static IEnumerable<TestCaseData> Cases2()
            => Enumerable.Range(1, 5).Select(Case2);

        [TestCaseSource(nameof(Cases2)), Parallelizable(ParallelScope.Children)]
        public void ItShouldSleep2(TimeSpan t)
            => Thread.Sleep(t);
    }

    [TestFixture()]
    public class Dummy2
    {
        static TestCaseData Case(int i)
            => new TestCaseData(TimeSpan.FromSeconds(2)).SetName($"Case {i}");

        public static IEnumerable<TestCaseData> Cases()
            => Enumerable.Range(1, 5).Select(Case);

        [TestCaseSource(nameof(Cases)), Parallelizable(ParallelScope.Children)]
        public void ItShouldSleep(TimeSpan t)
            => Thread.Sleep(t);
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top