es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Casos de prueba de C# para ICloneable.

Cómo obtener cobertura para el método object ICloneable.Clone() mientras se escriben casos de prueba.

 #region Miembros de ICloneable

    object ICloneable.Clone()
    {
        return this.Clone();
    }

    public new Blue Clone()
    {
        Blue _temp = (Blue)this.MemberwiseClone();
        _temp.Node = Node.Clone();

        return _temp;
    }

    #endregion

La cobertura actual se ve así

la cobertura se ve así.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener cobertura para el método ICloneable.Clone() mientras se escriben casos de prueba, se pueden seguir los siguientes pasos:

    1. Escribir un caso de prueba para cubrir el método Clone() de la clase que implementa ICloneable. Esto cubrirá el código de implementación del método ICloneable.Clone() ya que internamente llama al método Clone() de la clase.

    Código de ejemplo para caso de prueba:

    “`c#
    [Test]
    public void TestClone()
    {
    // Arrange
    Blue originalObj = new Blue();
    originalObj.Node = new Node() { Value = “Valor de prueba” };

    // Act
    Blue clonedObj = originalObj.Clone() as Blue;
    
    // Assert
    Assert.IsNotNull(clonedObj);
    Assert.AreEqual(originalObj.Node.Value, clonedObj.Node.Value);
    //... agregar más asertos si es necesario
    

    }


    2. Ejecutar el caso de prueba y revisar el informe de cobertura de código. La implementación del método `Clone()` debería estar completamente cubierta por el caso de prueba. Esto cubrirá indirectamente la implementación del método `ICloneable.Clone()` también. Código de ejemplo para herramienta de cobertura de código: ```c# [TestMethod] public void TestClone() { // Arrange Blue originalObj = new Blue(); originalObj.Node = new Node() { Value = "Valor de prueba" }; // Act Blue clonedObj = originalObj.Clone() as Blue; // Assert Assert.IsNotNull(clonedObj); Assert.AreEqual(originalObj.Node.Value, clonedObj.Node.Value); //... agregar más asertos si es necesario // Revisar la cobertura de código HerramientaDeCoberturaDeCodigo.CheckMethodCoverage(typeof(Blue), nameof(Blue.Clone)); }

    Nota: Si la clase implementa múltiples interfaces aparte de ICloneable, entonces escribir casos de prueba para cubrir todos los métodos de la clase que cubrirán indirectamente los métodos de las interfaces implementadas también.

Comments are closed.