Quantcast
Channel: Visual Studio and Visual Web Developer Express
Viewing all articles
Browse latest Browse all 3509

Why doesn't nunit recognize my tests?

$
0
0

Hello,

I just migrated from Visual Studio 2015 to Visual Studio 2017. My unit tests are no longer being discovered. When I googled how to get my unit tests to be discovered I found some useful hits that told me to install nunit 3.7.0 through NuGet. That worked for 77 tests. But all together, I have 784 tests. Why would nunit 3.7.0 discover only 77 tests and not the full 784?

Here's an example of test that nunit 3.7.0 discovered:

[code]
[TestFixture]
public class Consequence_MF_Tests : CalculationTestBase
{
[Test]
public void Calculation_Consequence_MitigatedFrequency_Test0()
{
_consequences[0].DoCalculations();
Assert.AreEqual(_consequences[0].MitigatedFrequency, 0.0003);
}

[Test]
public void Calculation_Consequence_MitigatedFrequency_Test1()
{
_consequences[1].DoCalculations();
Assert.AreEqual(_consequences[1].MitigatedFrequency, 0);
}

[Test]
public void Calculation_Consequence_MitigatedFrequency_Test2()
{
_consequences[2].DoCalculations();
Assert.AreEqual(_consequences[2].MitigatedFrequency, 2.0);
}

[Test]
public void Calculation_Consequence_MitigatedFrequency_Test3()
{
_consequences[3].DoCalculations();
Assert.AreEqual(_consequences[3].MitigatedFrequency, null);
}

[Test]
public void Calculation_Consequence_MitigatedFrequency_Test4()
{
var errors = _consequences[4].DoCalculations();

Assert.IsTrue(errors.Count == 1);
Assert.IsTrue(errors[0].Description.Contains("Safeguard Credit null"));
}

[Test]
public void Calculation_Consequence_MitigatedFrequency_Test5()
{
var errors = _consequences[5].DoCalculations();

Assert.IsTrue(errors.Count == 1);
Assert.IsTrue(errors[0].Description.Contains("Value cannot be null"));
}
}
[/code]

Here's an example of test that nunit 3.7.0 did not discover:

[code]
[TestFixture]
public class ETReportCardSpecs
{
#region test data for InitiatingEventBreakdowns

#region private members

private static IEnumerable<ChartDataDto> _result1;
private static IEnumerable<ChartDataDto> _result2;

#region H&S InitiatingEventBreakdowns

private static InitiatingEventBreakdown _ieb_HAndS_human_5 = new InitiatingEventBreakdown()
{
ConsequenceCategory = ConsequenceCodes.HealthAndSafety,
Code = CauseCodes.Human,
Total = 5
};

private static InitiatingEventBreakdown _ieb_HAndS_equipment_10 = new InitiatingEventBreakdown()
{
ConsequenceCategory = ConsequenceCodes.HealthAndSafety,
Code = CauseCodes.Equipment,
Total = 10
};

private static InitiatingEventBreakdown _ieb_HAndS_external_15 = new InitiatingEventBreakdown()
{
ConsequenceCategory = ConsequenceCodes.HealthAndSafety,
Code = CauseCodes.External,
Total = 15
};

private static InitiatingEventBreakdown _ieb_HAndS_undetermined_20 = new InitiatingEventBreakdown()
{
ConsequenceCategory = ConsequenceCodes.HealthAndSafety,
Code = CauseCodes.Undetermined,
Total = 20
};

#endregion

#region ENV InitiatingEventBreakdowns

private static InitiatingEventBreakdown _ieb_ENV_human_5 = new InitiatingEventBreakdown()
{
ConsequenceCategory = ConsequenceCodes.Environment,
Code = CauseCodes.Human,
Total = 5
};

private static InitiatingEventBreakdown _ieb_ENV_equipment_10 = new InitiatingEventBreakdown()
{
ConsequenceCategory = ConsequenceCodes.Environment,
Code = CauseCodes.Equipment,
Total = 10
};

private static InitiatingEventBreakdown _ieb_ENV_external_15 = new InitiatingEventBreakdown()
{
ConsequenceCategory = ConsequenceCodes.Environment,
Code = CauseCodes.External,
Total = 15
};

private static InitiatingEventBreakdown _ieb_ENV_undetermined_20 = new InitiatingEventBreakdown()
{
ConsequenceCategory = ConsequenceCodes.Environment,
Code = CauseCodes.Undetermined,
Total = 20
};

#endregion

#region ENC InitiatingEventBreakdowns

private static InitiatingEventBreakdown _ieb_ECN_human_5 = new InitiatingEventBreakdown()
{
ConsequenceCategory = ConsequenceCodes.Economic,
Code = CauseCodes.Human,
Total = 5
};

private static InitiatingEventBreakdown _ieb_ECN_equipment_10 = new InitiatingEventBreakdown()
{
ConsequenceCategory = ConsequenceCodes.Economic,
Code = CauseCodes.Equipment,
Total = 10
};

private static InitiatingEventBreakdown _ieb_ECN_external_15 = new InitiatingEventBreakdown()
{
ConsequenceCategory = ConsequenceCodes.Economic,
Code = CauseCodes.External,
Total = 15
};

private static InitiatingEventBreakdown _ieb_ECN_undetermined_20 = new InitiatingEventBreakdown()
{
ConsequenceCategory = ConsequenceCodes.Economic,
Code = CauseCodes.Undetermined,
Total = 20
};

#endregion

#endregion

private static IEnumerable<InitiatingEventBreakdown> GetTestInitiatingEventBreakdowns(int projectId)
{
switch (projectId)
{
case 1:
return new List<InitiatingEventBreakdown>()
{
_ieb_HAndS_human_5,
_ieb_HAndS_equipment_10,
_ieb_HAndS_external_15,
_ieb_HAndS_undetermined_20,
// equipment: 10/50

_ieb_ENV_human_5,
_ieb_ENV_human_5,
_ieb_ENV_equipment_10,
_ieb_ENV_external_15,
_ieb_ENV_undetermined_20,
// equipment: 10/55

_ieb_ECN_human_5,
_ieb_ECN_human_5,
_ieb_ECN_human_5,
_ieb_ECN_equipment_10,
_ieb_ECN_equipment_10,
_ieb_ECN_external_15,
_ieb_ECN_undetermined_20,
// equipment: 20/70
};

case 2:
return new List<InitiatingEventBreakdown>()
{
_ieb_HAndS_human_5,
_ieb_HAndS_external_15,
_ieb_HAndS_undetermined_20,
// equipment: 0/40

_ieb_ENV_equipment_10
// equipment: 10/10
};
}

return null;
}

#endregion

public class When_getting_equipment_threat_by_category : SpecsFor<PromComService>
{
protected override void Given()
{
GetMockFor<IRiskAliveContext>()
.Setup(ctx => ctx.GetInitiatingEventBreakdown(1))
.Returns(GetTestInitiatingEventBreakdowns(1));

GetMockFor<IRiskAliveContext>()
.Setup(ctx => ctx.GetInitiatingEventBreakdown(2))
.Returns(GetTestInitiatingEventBreakdowns(2));
}

protected override void When()
{
_result1 = SUT.GetEquipmentThreatsByReceptor(1);
_result2 = SUT.GetEquipmentThreatsByReceptor(2);
}

[Test]
public void then_result1_should_have_3_elements()
{
_result1.Count().ShouldEqual(3);
}

[Test]
public void then_consequence_categories_should_be_ordered_by_descending()
{
_result1.ElementAt(0).Label.ShouldEqual(ConsequenceCodes.HealthAndSafety);
_result1.ElementAt(1).Label.ShouldEqual(ConsequenceCodes.Environment);
_result1.ElementAt(2).Label.ShouldEqual(ConsequenceCodes.Economic);
}

[Test]
public void then_HAndS_for_result1_should_be_20_percent()
{
_result1.Where(x => x.Label.Equals(
ConsequenceCodes.HealthAndSafety, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).Value.ShouldEqual(0.2M);
}

[Test]
public void then_ENV_for_result1_should_be_18_percent()
{
var envValue = _result1.Where(x => x.Label.Equals(
ConsequenceCodes.Environment, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).Value;
double envValueRounded = Math.Round((double)envValue.Value, 2);
envValueRounded.ShouldEqual(0.18d);
}

[Test]
public void then_ECN_for_result1_should_be_29_percent()
{
var ecnValue = _result1.Where(x => x.Label.Equals(
ConsequenceCodes.Economic, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).Value;
double ecnValueRounded = Math.Round((double)ecnValue.Value, 2);
ecnValueRounded.ShouldEqual(0.29d);
}

[Test]
public void then_result2_should_have_3_elements()
{
_result2.Count().ShouldEqual(3);
}

[Test]
public void then_HAndS_for_result2_should_be_0_percent()
{
_result2.Where(x => x.Label.Equals(
ConsequenceCodes.HealthAndSafety, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).Value.ShouldEqual(0.0M);
}

[Test]
public void then_ECN_should_have_0_value_for_result2()
{
_result2.Where(x => x.Label.Equals(
ConsequenceCodes.Economic, StringComparison.CurrentCultureIgnoreCase))
.Count().ShouldEqual(1);

_result2.Where(x => x.Label.Equals(
ConsequenceCodes.Economic, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).Value.ShouldEqual(0.0M);
}

[Test]
public void then_EVN_for_result2_should_be_100_percent()
{
_result2.Where(x => x.Label.Equals(
ConsequenceCodes.Environment, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).Value.ShouldEqual(1.0M);
}
}


#region test data for average equipment threats

#region private members

private static IEnumerable<ChartDataDtoWithStandardDeviation> _result3;
private static IEnumerable<ChartDataDtoWithStandardDeviation> _no_ECN_result;
private static IEnumerable<ChartDataDtoWithStandardDeviation> _no_ENV_result;
private static IEnumerable<ChartDataDtoWithStandardDeviation> _no_HAndS_result;
private static IEnumerable<ChartDataDtoWithStandardDeviation> _no_ECN_ENV_result;
private static IEnumerable<ChartDataDtoWithStandardDeviation> _0_stddev_result;

#region H&S

private static AverageMetricByCategory _HAndS_equipment_threat_0_5 = new AverageMetricByCategory()
{
ConsequenceCategory = ConsequenceCodes.HealthAndSafety,
Ratio = 0.5M,
Average = 0.6455M,
StandardDeviation = 0.1502M
};

private static AverageMetricByCategory _HAndS_equipment_threat_0_6364 = new AverageMetricByCategory()
{
ConsequenceCategory = ConsequenceCodes.HealthAndSafety,
Ratio = 0.6364M,
Average = 0.6455M,
StandardDeviation = 0.1502M
};

private static AverageMetricByCategory _HAndS_equipment_threat_0_8 = new AverageMetricByCategory()
{
ConsequenceCategory = ConsequenceCodes.HealthAndSafety,
Ratio = 0.8M,
Average = 0.6455M,
StandardDeviation = 0.1502M
};

#endregion

#region ENV

private static AverageMetricByCategory _ENV_equipment_threat_0_7 = new AverageMetricByCategory()
{
ConsequenceCategory = ConsequenceCodes.Environment,
Ratio = 0.7M,
Average = 0.6147M,
StandardDeviation = 0.1206M
};

private static AverageMetricByCategory _ENV_equipment_threat_0_5294 = new AverageMetricByCategory()
{
ConsequenceCategory = ConsequenceCodes.Environment,
Ratio = 0.5294M,
Average = 0.6147M,
StandardDeviation = 0.1206M
};

#endregion

#region ENC

private static AverageMetricByCategory _ECN_equipment_threat_0_4783 = new AverageMetricByCategory()
{
ConsequenceCategory = ConsequenceCodes.Economic,
Ratio = 0.4783M,
Average = 0.5746M,
StandardDeviation = 0.1137M
};

private static AverageMetricByCategory _ECN_equipment_threat_0_7 = new AverageMetricByCategory()
{
ConsequenceCategory = ConsequenceCodes.Economic,
Ratio = 0.7M,
Average = 0.5746M,
StandardDeviation = 0.1137M
};

private static AverageMetricByCategory _ECN_equipment_threat_0_5455 = new AverageMetricByCategory()
{
ConsequenceCategory = ConsequenceCodes.Economic,
Ratio = 0.5455M,
Average = 0.5746M,
StandardDeviation = 0.1137M
};

#endregion

// for testing case when only 1 project passed in for "others"
#region 0 standard deviation

private static AverageMetricByCategory _HAndS_return_on_investment_0_stddev = new AverageMetricByCategory()
{
ConsequenceCategory = ConsequenceCodes.HealthAndSafety,
Ratio = 0.2308M,
Average = 0.2308M,
StandardDeviation = 0.0M
};

private static AverageMetricByCategory _ENV_return_on_investment_0_stddev = new AverageMetricByCategory()
{
ConsequenceCategory = ConsequenceCodes.Economic,
Ratio = 0.2759M,
Average = 0.2759M,
StandardDeviation = 0.0M
};

private static AverageMetricByCategory _ECN_return_on_investment_0_stddev = new AverageMetricByCategory()
{
ConsequenceCategory = ConsequenceCodes.Economic,
Ratio = 0.875M,
Average = 0.875M,
StandardDeviation = 0.0M
};

#endregion

#endregion

private static IEnumerable<AverageMetricByCategory> GetTestAverageEquipmentThreatsByCategory(int projectId)
{
switch (projectId)
{
case 1:
return new List<AverageMetricByCategory>()
{
_HAndS_equipment_threat_0_5,
_HAndS_equipment_threat_0_6364,
_HAndS_equipment_threat_0_8,

_ENV_equipment_threat_0_7,
_ENV_equipment_threat_0_5294,

_ECN_equipment_threat_0_4783,
_ECN_equipment_threat_0_7,
_ECN_equipment_threat_0_5455
};

case 2:
return new List<AverageMetricByCategory>()
{
_HAndS_equipment_threat_0_5,
_HAndS_equipment_threat_0_6364,
_HAndS_equipment_threat_0_8,

_ENV_equipment_threat_0_7,
_ENV_equipment_threat_0_5294
};

case 3:
return new List<AverageMetricByCategory>()
{
_HAndS_equipment_threat_0_5,
_HAndS_equipment_threat_0_6364,
_HAndS_equipment_threat_0_8,

_ECN_equipment_threat_0_4783,
_ECN_equipment_threat_0_7,
_ECN_equipment_threat_0_5455
};
case 4:
return new List<AverageMetricByCategory>()
{
_ENV_equipment_threat_0_7,
_ENV_equipment_threat_0_5294,

_ECN_equipment_threat_0_4783,
_ECN_equipment_threat_0_7,
_ECN_equipment_threat_0_5455
};

case 5:
return new List<AverageMetricByCategory>()
{
_HAndS_equipment_threat_0_5,
_HAndS_equipment_threat_0_6364,
_HAndS_equipment_threat_0_8
};

case 6:
return new List<AverageMetricByCategory>()
{
_HAndS_return_on_investment_0_stddev,
_ENV_return_on_investment_0_stddev,
_ECN_return_on_investment_0_stddev
};
}

return null;
}

#endregion

public class When_getting_average_equipment_threat_by_receptor : SpecsFor<PromComService>
{
protected override void Given()
{
GetMockFor<IRiskAliveContext>()
.Setup(ctx => ctx.GetAvgEquipmentThreatsByCategory("26,27,28")) // <-- Hard coded project IDs
.Returns(GetTestAverageEquipmentThreatsByCategory(1));

GetMockFor<IRiskAliveContext>()
.Setup(ctx => ctx.GetAvgEquipmentThreatsByCategory("NoECNTest")) // <-- Temporary value until we stop hardcoding project ID list.
.Returns(GetTestAverageEquipmentThreatsByCategory(2));

GetMockFor<IRiskAliveContext>()
.Setup(ctx => ctx.GetAvgEquipmentThreatsByCategory("NoENVTest")) // <-- Temporary value until we stop hardcoding project ID list.
.Returns(GetTestAverageEquipmentThreatsByCategory(3));

GetMockFor<IRiskAliveContext>()
.Setup(ctx => ctx.GetAvgEquipmentThreatsByCategory("NoHAndSTest")) // <-- Temporary value until we stop hardcoding project ID list.
.Returns(GetTestAverageEquipmentThreatsByCategory(4));

GetMockFor<IRiskAliveContext>()
.Setup(ctx => ctx.GetAvgEquipmentThreatsByCategory("NoECN_ENVTest")) // <-- Temporary value until we stop hardcoding project ID list.
.Returns(GetTestAverageEquipmentThreatsByCategory(5));

GetMockFor<IRiskAliveContext>()
.Setup(ctx => ctx.GetAvgEquipmentThreatsByCategory("0")) // <-- Temporary value until we stop hardcoding project ID list.
.Returns(GetTestAverageEquipmentThreatsByCategory(6));
}

protected override void When()
{
_result3 = SUT.GetAverageMetricByCategory(ReportCardIcon.ET);

SUT.ChangeProjectIdListForUnitTests("NoECNTest");

_no_ECN_result = SUT.GetAverageMetricByCategory(ReportCardIcon.ET);

SUT.ChangeProjectIdListForUnitTests("NoENVTest");

_no_ENV_result = SUT.GetAverageMetricByCategory(ReportCardIcon.ET);

SUT.ChangeProjectIdListForUnitTests("NoHAndSTest");

_no_HAndS_result = SUT.GetAverageMetricByCategory(ReportCardIcon.ET);

SUT.ChangeProjectIdListForUnitTests("NoECN_ENVTest");

_no_ECN_ENV_result = SUT.GetAverageMetricByCategory(ReportCardIcon.ET);

SUT.ChangeProjectIdListForUnitTests("0");

_0_stddev_result = SUT.GetAverageMetricByCategory(ReportCardIcon.ET);

SUT.RevertProjectIdListForUnitTests();
}

[Test]
public void then_result3_should_have_3_elements()
{
_result3.Count().ShouldEqual(3);
}

[Test]
public void then_consequence_categories_should_be_ordered_by_descending()
{
_result3.ElementAt(0).Label.ShouldEqual(ConsequenceCodes.HealthAndSafety);
_result3.ElementAt(1).Label.ShouldEqual(ConsequenceCodes.Environment);
_result3.ElementAt(2).Label.ShouldEqual(ConsequenceCodes.Economic);
}

[Test]
public void then_avg_HAndS_should_be_0_6455()
{
_result3.Where(x => x.Label.Equals(
ConsequenceCodes.HealthAndSafety, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).Value.ShouldEqual(0.6455M);
}

[Test]
public void then_avg_ENV_should_be_0_6147()
{
_result3.Where(x => x.Label.Equals(
ConsequenceCodes.Environment, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).Value.ShouldEqual(0.6147M);
}

[Test]
public void then_avg_ECN_should_be_0_5746()
{
_result3.Where(x => x.Label.Equals(
ConsequenceCodes.Economic, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).Value.ShouldEqual(0.5746M);
}

[Test]
public void then_StdDev_HAndS_should_be_0_1502()
{
_result3.Where(x => x.Label.Equals(
ConsequenceCodes.HealthAndSafety, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).StandardDeviation.ShouldEqual(0.1502M);
}

[Test]
public void then_StdDev_ENV_should_be_0_1206()
{
_result3.Where(x => x.Label.Equals(
ConsequenceCodes.Environment, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).StandardDeviation.ShouldEqual(0.1206M);
}

[Test]
public void then_StdDev_ECN_should_be_0_1137()
{
_result3.Where(x => x.Label.Equals(
ConsequenceCodes.Economic, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).StandardDeviation.ShouldEqual(0.1137M);
}

[Test]
public void then_ECN_should_exist_with_0_values_for_no_ECN_result()
{
_no_ECN_result.Where(x => x.Label.Equals(
ConsequenceCodes.Economic, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).Value.ShouldEqual(0.0M);

_no_ECN_result.Where(x => x.Label.Equals(
ConsequenceCodes.Economic, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).StandardDeviation.ShouldEqual(0.0M);
}

[Test]
public void then_ENV_should_exist_with_0_values_for_no_ENV_result()
{
_no_ENV_result.Where(x => x.Label.Equals(
ConsequenceCodes.Environment, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).Value.ShouldEqual(0.0M);

_no_ENV_result.Where(x => x.Label.Equals(
ConsequenceCodes.Environment, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).StandardDeviation.ShouldEqual(0.0M);
}

[Test]
public void then_HAndS_should_exist_with_0_values_for_no_HAndS_result()
{
_no_HAndS_result.Where(x => x.Label.Equals(
ConsequenceCodes.HealthAndSafety, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).Value.ShouldEqual(0.0M);

_no_HAndS_result.Where(x => x.Label.Equals(
ConsequenceCodes.HealthAndSafety, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).StandardDeviation.ShouldEqual(0.0M);
}

[Test]
public void then_ECN_and_ENV_should_exist_with_0_values_for_no_ECN_ENV_result()
{
_no_ECN_ENV_result.Where(x => x.Label.Equals(
ConsequenceCodes.Economic, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).Value.ShouldEqual(0.0M);

_no_ECN_ENV_result.Where(x => x.Label.Equals(
ConsequenceCodes.Economic, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).StandardDeviation.ShouldEqual(0.0M);

_no_ECN_ENV_result.Where(x => x.Label.Equals(
ConsequenceCodes.Environment, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).Value.ShouldEqual(0.0M);

_no_ECN_ENV_result.Where(x => x.Label.Equals(
ConsequenceCodes.Environment, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).StandardDeviation.ShouldEqual(0.0M);
}

[Test]
public void then_stddev_should_ebe_0_for_0_stddev_result()
{
_0_stddev_result.Where(x => x.Label.Equals(
ConsequenceCodes.HealthAndSafety, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).StandardDeviation.ShouldEqual(0.0M);

_0_stddev_result.Where(x => x.Label.Equals(
ConsequenceCodes.Environment, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).StandardDeviation.ShouldEqual(0.0M);

_0_stddev_result.Where(x => x.Label.Equals(
ConsequenceCodes.Economic, StringComparison.CurrentCultureIgnoreCase))
.ElementAt(0).StandardDeviation.ShouldEqual(0.0M);
}
}
}
[/code]

The only difference I see is that the latter involves the when/given/then structure.


Viewing all articles
Browse latest Browse all 3509

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>