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.

Cómo obtener cobertura de código en los setter de registros de C# con constructor posicional.

Me di cuenta de que mis Registros de C# con sintaxis de constructor posicional no reportan cobertura de código en Visual Studio 2022 Enterprise. Por ejemplo, se define un registro como:

public record BallPoint(int X, int Y, int Z);

Y la prueba:

    [Fact]
    public void Test1()
    {
        var sut = new BallPoint(1, 2, 3);

        Assert.Equal(1, sut.X);
        Assert.Equal(2, sut.Y);
        Assert.Equal(3, sut.Z);
    }

Luego, la cobertura muestra setters internos que no están cubiertos:

Vista de cobertura de código

¿Cómo puedo lograr una cobertura del 100% para este Registro?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en c# y cobertura de código, sugiero que modifiques tu prueba para cubrir los setters internos cambiándola a algo como esto:

            [Fact]
            public void Test1()
            {
                var sut = new BallPoint(1, 2, 3);
    
                Assert.Equal(1, sut.X);
                Assert.Equal(2, sut.Y);
                Assert.Equal(3, sut.Z);
    
                sut = sut with { X = 4 }; // cambia el valor de X
    
                Assert.Equal(4, sut.X); // verifica el nuevo valor
    
                sut = sut with { Y = 5 }; // cambia el valor de Y
    
                Assert.Equal(5, sut.Y); // verifica el nuevo valor
    
                sut = sut with { Z = 6 }; // cambia el valor de Z
    
                Assert.Equal(6, sut.Z); // verifica el nuevo valor
            }
    

    Esto asegurará que todos los setters internos estén cubiertos y que logres una cobertura de código del 100% en Visual Studio 2022 Enterprise para tu registro de C# con sintaxis de constructor posicional.

Comments are closed.