gpt4 book ai didi

c# - 如何判断哪个 TestCaseData 失败(在 TestCaseSource 代码中)

转载 作者:行者123 更新时间:2023-11-28 21:11:20 24 4
gpt4 key购买 nike

我在 VS2013 中使用 TFS。我在编写测试时使用 TestCaseSource:

[Test]
[TestCaseSource("GetExtraWifQuestionsTestData")]
public void GetExtraWifQuestionsTest(WifWillTypeQuestionsViewModel viewModel, IEnumerable<QuestionItemViewModel> expected)
{
viewModel.GetExtraWifQuestions();
for (int i = 0; i < expected.Count(); i++)
{
Assert.True(expected.ElementAt(i).Equals(viewModel.QuestionItems.ElementAt(i)));
}
}

问题是我在 GetExtraWifQuestionsTestData() 中有很多测试用例,其中一些失败了。在测试用例数据中构造的对象非常复杂,并且使用助手来生成模拟的部分数据。 (仅举几个例子还有很多)

public IEnumerable<TestCaseData> GetExtraWifQuestionsTestData()
{
yield return
new TestCaseData(
new WifWillTypeQuestionsViewModel(
MocksHelper.WifView,
new TransactionMain
{
TransactionDetailList =
new Collection<TransactionDetail>(
new[] { new TransactionDetail { DefaultQuestions = QuestionTestCaseDataHelper.WifWillTypeQuestions(), TransactionWill = new TransactionWill { IsCouple = 1L, WillTypeRecomendationResolutions = QuestionTestCaseDataHelper.WillTypeRecomendationResolutions.ToList()} } })
},
new QuestionControlFactory(MocksHelper.IViewFactory))
{
QuestionItems =
new CustomerQuestionCollection(
QuestionTestCaseDataHelper.WifWillTypeQuestionItemViewModelQuestionAnswerGeneratorByAnswerNullsNotAdded(true, true, null, false, false))
},
QuestionTestCaseDataHelper.WifWillTypeQuestionItemViewModelQuestionAnswerGeneratorByAnswerNullsNotAdded(true, true, null, false, false)
.Concat(QuestionTestCaseDataHelper.WifWillTypeQuestionItemViewModelQuestionAnswerGeneratorByAnswer(null, null, null, null, null, null, null).Where(o => o.Question.DisplayOrder == 7)));
yield return
new TestCaseData(
new WifWillTypeQuestionsViewModel(
MocksHelper.WifView,
new TransactionMain
{
TransactionDetailList =
new Collection<TransactionDetail>(
new[] { new TransactionDetail { DefaultQuestions = QuestionTestCaseDataHelper.WifWillTypeQuestions(), TransactionWill = new TransactionWill { IsCouple = 1L, WillTypeRecomendationResolutions = QuestionTestCaseDataHelper.WillTypeRecomendationResolutions.ToList() } } })
},
new QuestionControlFactory(MocksHelper.IViewFactory))
{
QuestionItems =
new CustomerQuestionCollection(
QuestionTestCaseDataHelper.WifWillTypeQuestionItemViewModelQuestionAnswerGeneratorByAnswerNullsNotAdded(true, true, null, false, false, null, true))
},
QuestionTestCaseDataHelper.WifWillTypeQuestionItemViewModelQuestionAnswerGeneratorByAnswerNullsNotAdded(true, true, null, false, false, null, true)
.Concat(QuestionTestCaseDataHelper.WifWillTypeQuestionItemViewModelQuestionAnswerGeneratorByAnswer(null, null, null, null, null, null, null, null, null).Where(o => o.Question.DisplayOrder == 8)));
}

我可以使用 Unit sessions window
运行失败的特定测试用例 enter image description here然后通过导航堆栈跟踪,我可以找出导致错误的原因,有时需要更改的是测试用例数据(机制按预期工作 - 测试已过时)。

但是当我需要在 GetExtraWifQuestionsTestData 中编辑一些 TestCaseData 时,我无法找到一种方法来判断哪个失败了。我如何查明哪些测试用例失败了?是否有任何内置机制可以做到这一点,或者是否有一些不费力的“破解”。请在回答问题时记住,我们不是在谈论这个具体案例,而是在使用复杂的模拟机制时通常如何做到这一点,并且不是很明显哪个是哪个。

更新:ATM 我正在​​注释掉所有的案例,然后一个一个地取消注释,但是这不是一个非常有效的方法。

最佳答案

当您创建 TestCaseData 时,将其分解为一个方法并使用 SetName 方法。

private TestCaseData TestCaseData1()
{
TestCaseData data = new TestCaseData();
// set your variables
data.SetName("TestCaseData1");
return data;
};

private TestCaseData TestCaseData2()
{
TestCaseData data = new TestCaseData();
// set your variables
data.SetName("TestCaseData2");
return data;
};

然后当您创建 IEnumerable 时...

public IEnumerable<TestCaseData> GetExtraWifQuestionsTestData()
{
yield return TestCaseData1();
yield return TestCaseData2();
}

然后,当您运行测试时,它们将单独出现,而不是与通用方法名称一起出现。

它不会让我发布图片,但它会显示如下内容:

Passed Tests(2)
()TestCaseData1
()TestCaseData2

关于c# - 如何判断哪个 TestCaseData 失败(在 TestCaseSource 代码中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26731209/

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