gpt4 book ai didi

c# - 在单元测试中使用动态

转载 作者:太空狗 更新时间:2023-10-29 20:37:44 25 4
gpt4 key购买 nike

我在这里看到一些问题,人们要求批评他们的单元测试。我好像还没有关闭,所以我也想这样做。

我提出了这些测试,我相信通过使用 dynamic 可以使这些测试更具可读性,但我想知道 SO 社区中是否有人可以添加任何内容。

我知道动态的使用出于某种原因非常有争议,并且出于某种原因在 C# 开发人员之间引发了宗教 war 。我真的希望避免这种情况;我只是想写一些好的测试来帮助我完成我的工作:)

    [TestMethod]
public void TestAllocation() {
SearchView.StubPropertyNumValueThenSetUpSearchView<WellDetail>("TX", Property.WorkingInterestTaxSubtypeId);
Presenter.SetUpPhaseAndFmvValues(Phase.PhaseIdForForRenderAppraiser, 1000);

AddTheseItems(
new { PropNum = "pn1", CAN = "can1", MostRecentFmv = 10 },
new { PropNum = "pn1", CAN = "can1", MostRecentFmv = 10 },
new { PropNum = "pn1", CAN = "can1", MostRecentFmv = 10 },
new { PropNum = "pn1", CAN = "can1", MostRecentFmv = 10 },

new { PropNum = "pn1", CAN = "can2", MostRecentFmv = 40 },
new { PropNum = "pn1", CAN = "can2", MostRecentFmv = 40 },
new { PropNum = "pn1", CAN = "can2", MostRecentFmv = 40 },

new { PropNum = "pn2", CAN = "can1", MostRecentFmv = 50 },
new { PropNum = "pn2", CAN = "can1", MostRecentFmv = 50 });

Presenter.Process(SearchView, ItemsToProcess);

AssertTheseItemsExist(
new { NumberOfTimes = 4, PropNum = "pn1", CAN = "can1", FmvCalculated = 100 },
new { NumberOfTimes = 3, PropNum = "pn1", CAN = "can2", FmvCalculated = 400 },
new { NumberOfTimes = 2, PropNum = "pn2", CAN = "can1", FmvCalculated = 500 });
}

private void AddTheseItems(params dynamic[] MassUpdateDtos) {
foreach(dynamic item in MassUpdateDtos)
ItemsToProcess.Add(new MassFMVUpdateDTO(new WellDetail() { PropertyNum = item.PropNum, CountyAccountNum = item.CAN }, new FMVHistory(), 0, item.MostRecentFmv));
}

private void AssertTheseItemsExist(params dynamic[] uniqueTargets) {
foreach (dynamic target in uniqueTargets)
Assert.AreEqual(target.NumberOfTimes, ItemsToProcess.Count(f => f.PropertyNum == target.PropNum && f.CountyAccountNum == target.CAN && f.FMV == target.FmvCalculated));
}

最佳答案

当然,动态的使用减少了您需要使用的代码行。但首先要考虑您希望从单元测试中得到什么。您希望他们告诉您代码哪里出了问题。

如果您添加的其中一行数据有误,它会告诉您哪一行失败了吗?如果其中一个断言失败,它会告诉您是哪一个吗?

只要您可以获得所需的信息,就应该没问题。所以它应该准确地指出出了什么问题以及什么时候发生的。

关于c# - 在单元测试中使用动态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5474110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com