Closed
Description
Hi guys!
After updating to .NET 7 new coverage issue was found.
It can be reproduced easily, you just need to reuse the same method group delegate.
Code:
namespace ClassLibrary1;
public class Class1
{
public int[] Query1()
{
return new[] { 1, 2, 3 }.Select(Map).ToArray();
}
public int[] Query2()
{
return new[] { 1, 2, 3 }.Select(Map).ToArray();
}
private static int Map(int row) => row + 1;
}
Test:
using ClassLibrary1;
using NUnit.Framework;
namespace TestProject1;
public class Tests
{
[Test]
public void Test1()
{
new Class1().Query1();
Assert.Pass();
}
[Test]
public void Test2()
{
new Class1().Query2();
Assert.Pass();
}
}
Expected:
Full branch coverage (no branches at all)
Actual:
Partially covered (1 visits, 1 of 2 branches are covered)
Report:
<?xml version="1.0" encoding="utf-8"?>
<coverage line-rate="1" branch-rate="0.75" version="1.9" timestamp="1676057701" lines-covered="7" lines-valid="7" branches-covered="3" branches-valid="4">
<sources>
<source>F:\</source>
</sources>
<packages>
<package name="ClassLibrary1" line-rate="1" branch-rate="0.75" complexity="5">
<classes>
<class name="ClassLibrary1.Class1" filename="ClassLibrary1\Class1.cs" line-rate="1" branch-rate="0.75" complexity="5">
<methods>
<method name="Query1" signature="()" line-rate="1" branch-rate="1" complexity="2">
<lines>
<line number="6" hits="1" branch="False" />
<line number="7" hits="1" branch="True" condition-coverage="100% (2/2)">
<conditions>
<condition number="24" type="jump" coverage="100%" />
</conditions>
</line>
<line number="8" hits="1" branch="False" />
</lines>
</method>
<method name="Query2" signature="()" line-rate="1" branch-rate="0.5" complexity="2">
<lines>
<line number="11" hits="1" branch="False" />
<line number="12" hits="1" branch="True" condition-coverage="50% (1/2)">
<conditions>
<condition number="24" type="jump" coverage="50%" />
</conditions>
</line>
<line number="13" hits="1" branch="False" />
</lines>
</method>
<method name="Map" signature="(System.Int32)" line-rate="1" branch-rate="1" complexity="1">
<lines>
<line number="15" hits="6" branch="False" />
</lines>
</method>
</methods>
<lines>
<line number="6" hits="1" branch="False" />
<line number="7" hits="1" branch="True" condition-coverage="100% (2/2)">
<conditions>
<condition number="24" type="jump" coverage="100%" />
</conditions>
</line>
<line number="8" hits="1" branch="False" />
<line number="11" hits="1" branch="False" />
<line number="12" hits="1" branch="True" condition-coverage="50% (1/2)">
<conditions>
<condition number="24" type="jump" coverage="50%" />
</conditions>
</line>
<line number="13" hits="1" branch="False" />
<line number="15" hits="6" branch="False" />
</lines>
</class>
</classes>
</package>
</packages>
</coverage>
Reproduced in .NET 7, Coverlet 3.2.0