Xunit - 如何在每次参数化测试迭代后运行清理?

Xunit - how to have a cleanup being run after EVERY iteration of parametrized test?

提问人:PanBocian 提问时间:11/7/2023 更新时间:11/7/2023 访问量:46

问:

我有这个问题,因为我找不到这个特定问题的答案。我在 Xunit 中有一些测试,这些测试是参数化的。我希望在每次测试迭代后运行清理,而不仅仅是每个测试用例一次。

public class UnitTest: TestsBase
{
    [Theory]
    [InlineData(BrowserType.Chrome)]
    [InlineData(BrowserType.Edge)]
    [InlineData(BrowserType.Firefox)]
    public void Test1(BrowserType browserType)
    {
    //do something
    }

public abstract class TestsBase : IDisposable
{
   
    public async void Dispose()
    {
        //Cleanup
    }
}

这里一切正常,在整个 Test1 运行(所有 3 个浏览器)后运行清理,我不知道如何在每次迭代(内联数据)后运行它

C# xunit

评论

2赞 Fildor 11/7/2023
你能摆脱继承吗?至少对于您需要清理的组件?
0赞 PanBocian 11/7/2023
你能详细说明一下吗?
0赞 Fildor 11/7/2023
如果需要释放的组件与测试相关,则可以根据需要主动释放和重新创建它们。事实上,它是一种“is-a”关系,它阻止你这样做。
0赞 Fildor 11/7/2023
或。。。为什么不使用所有需要特定于调用的资源创建 TheoryData?然后,将理论中的每个测试用例传递一个新实例进行测试。如果您能详细说明一下您到底需要处理什么,我们也许可以提出更合适的想法。
0赞 PanBocian 11/7/2023
好吧,就我而言,每次测试迭代都会创建一些数据库条目,我需要在每次迭代后删除该条目,或者每次迭代都应该将条目 ID 添加到某个列表中,并且 clean 方法应该遍历该列表 id 以从数据库中删除所有条目。类似的东西。

答: 暂无答案