标签: nunit

NUnit与MbUnit对比MSTest与xUnit.net

.NET有很多单元测试框架.我找到了这个小功能比较:http://xunit.github.io/docs/comparisons.html

现在我要为我们选择最好的一个.但是怎么样?有关系吗?哪一个是最具前瞻性的证据,背后有一个不错的动力?我应该关心这些功能吗?虽然xUnit似乎是最现代的,专为.NET设计,但NUnit似乎再次被广泛接受.MSTest再次集成到Visual Studio中......

mbunit nunit unit-testing mstest xunit.net

384
推荐指数
7
解决办法
11万
查看次数

NUnit vs Visual Studio 2008的单元测试测试项目?

我将在工作中启动一个新项目,并希望进入单元测试.我们将使用VS 2008,C#和ASP.NET MVC.我正在考虑使用NUnit或VS2008具有的内置测试项目,但我愿意研究其他建议.一个系统比另一个系统更好,或者比另一个更容易使用/理解?我希望将这个项目设置为我们未来发展努力的"最佳实践".

感谢您的帮助和建议!!

c# asp.net-mvc nunit unit-testing visual-studio-2008

252
推荐指数
17
解决办法
6万
查看次数

Moq第一次和第二次使用不同的返回值

我有这样的测试:

    [TestCase("~/page/myaction")]
    public void Page_With_Custom_Action(string path) {
        // Arrange
        var pathData = new Mock<IPathData>();
        var pageModel = new Mock<IPageModel>();
        var repository = new Mock<IPageRepository>();
        var mapper = new Mock<IControllerMapper>();
        var container = new Mock<IContainer>();

        container.Setup(x => x.GetInstance<IPageRepository>()).Returns(repository.Object);

        repository.Setup(x => x.GetPageByUrl<IPageModel>(path)).Returns(() => pageModel.Object);

        pathData.Setup(x => x.Action).Returns("myaction");
        pathData.Setup(x => x.Controller).Returns("page");

        var resolver = new DashboardPathResolver(pathData.Object, repository.Object, mapper.Object, container.Object);

        // Act
        var data = resolver.ResolvePath(path);

        // Assert
        Assert.NotNull(data);
        Assert.AreEqual("myaction", data.Action);
        Assert.AreEqual("page", data.Controller);
    }
Run Code Online (Sandbox Code Playgroud)

GetPageByUrl在我的dashboardpathresolver中运行两次,我如何告诉Moq第一次返回null并且pageModel.Ojbect第二次?

c# nunit unit-testing moq

232
推荐指数
6
解决办法
7万
查看次数

如何使用Assert.Throws来断言异常的类型?

如何使用Assert.Throws断言异常的类型和实际的消息措辞.

像这样的东西:

Assert.Throws<Exception>(
    ()=>user.MakeUserActive()).WithMessage("Actual exception message")
Run Code Online (Sandbox Code Playgroud)

我正在测试的方法抛出多个相同类型的消息,使用不同的消息,我需要一种方法来测试是否根据上下文抛出了正确的消息.

c# nunit exception assertions

226
推荐指数
5
解决办法
12万
查看次数

测试资源管理器 (VS) 显示“&lt;未知项目&gt;”

下面的一切都是在 VS2019 中制作的,使用 .NET Framework 4.7 和 NUnit + NUnit3TestAdapter

我创建了一个名为 Exitus.Tests 的程序集,并添加了一些单元测试。但是,为了解决一些我无法解决的 Nuget 问题,我创建了另一个名为 Exitus.UnitTests 的项目,并删除了旧项目中的 once 文件(包括更改命名空间)。

现在新的测试项目在资源管理器中正确显示了 op,但旧项目的“幽灵”仍然存在:

Visual Studio 测试资源管理器

如果我尝试运行测试,输出窗口会显示以下错误:

System.InvalidOperationException:在 Microsoft.VisualStudio.TestWindow.Client.TestContainer.TestContainerProvider 中未找到以下 TestContainer 'C:\Users\xxx\Source\Repositories\Expire\Exitus.Tests\bin\Debug\Exitus.Tests.dll' .d__46.MoveNext() --- 从上一个抛出异常的位置开始的堆栈跟踪结束 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) ) 在 Microsoft.VisualStudio.TestWindow.Controller.TestContainerConfigurationQueryByTestsBase.d__6.MoveNext() (...)

堆栈跟踪要长很多,但奇怪的是第二行,指出它在\Exitus.Tests\bin\Debug\Exitus.Tests.dll. 这是我删除并删除的旧测试项目的名称。我已经在整个项目中搜索了该术语Exitus.Tests,但没有返回任何结果。

有没有办法强行删除这个“幽灵”项目?

c# nunit visual-studio

181
推荐指数
2
解决办法
2万
查看次数

如何查找活动的app.config文件的路径?

我正在尝试完成此异常处理程序:

if (ConfigurationManager.ConnectionStrings["ConnectionString"]==null)
{
    string pathOfActiveConfigFile = ...?
    throw new ConfigurationErrorsException(
       "You either forgot to set the connection string, or " +
       "you're using a unit test framework that looks for  "+
       "the config file in strange places, update this file : " 
       + pathOfActiveConfigFile);
}
Run Code Online (Sandbox Code Playgroud)

当我使用nUnit时,这个问题似乎只发生在我身上.

.net c# nunit configurationmanager app-config

163
推荐指数
6
解决办法
14万
查看次数

如何在Visual Studio 2017中运行NUnit测试?

我刚刚安装了VS 2017.我有一个使用NUnit进行测试用例的项目. Ctrl+ R- T不再运行测试,并且测试资源管理器不再找到标有TestCase属性的任何测试用例.

有没有办法让NUnit运行,或者我能找到更新?我从Nuget包管理器重新安装了NUnit到最新版本但没有任何改进.

nunit visual-studio vstest visual-studio-2017 visual-studio-2019

163
推荐指数
5
解决办法
9万
查看次数

使用Moq验证特定参数

public void SubmitMessagesToQueue_OneMessage_SubmitSuccessfully()
{
    var messageServiceClientMock = new Mock<IMessageServiceClient>();
    var queueableMessage = CreateSingleQueueableMessage();
    var message = queueableMessage[0];
    var xml = QueueableMessageAsXml(queueableMessage);
    messageServiceClientMock.Setup(proxy => proxy.SubmitMessage(xml)).Verifiable();
    //messageServiceClientMock.Setup(proxy => proxy.SubmitMessage(It.IsAny<XmlElement>())).Verifiable();

    var serviceProxyFactoryStub = new Mock<IMessageServiceClientFactory>();
    serviceProxyFactoryStub.Setup(proxyFactory => proxyFactory.CreateProxy()).Returns(essageServiceClientMock.Object);
    var loggerStub = new Mock<ILogger>();

    var client = new MessageClient(serviceProxyFactoryStub.Object, loggerStub.Object);
    client.SubmitMessagesToQueue(new List<IMessageRequestDTO> {message});

    //messageServiceClientMock.Verify(proxy => proxy.SubmitMessage(xml), Times.Once());
    messageServiceClientMock.Verify();
}
Run Code Online (Sandbox Code Playgroud)

我开始使用Moq并且有点挣扎.我正在尝试验证messageServiceClient是否正在接收正确的参数,这是一个XmlElement,但我找不到任何方法使它工作.它仅在我不检查特定值时才有效.

有任何想法吗?

部分答案:我找到了一种方法来测试发送给代理的xml是否正确,但我仍然认为这不是正确的方法.

public void SubmitMessagesToQueue_OneMessage_SubmitSuccessfully()
{
    var messageServiceClientMock = new Mock<IMessageServiceClient>();
    messageServiceClientMock.Setup(proxy => proxy.SubmitMessage(It.IsAny<XmlElement>())).Verifiable();
    var serviceProxyFactoryStub = new Mock<IMessageServiceClientFactory>();
    serviceProxyFactoryStub.Setup(proxyFactory => proxyFactory.CreateProxy()).Returns(messageServiceClientMock.Object);
    var loggerStub …
Run Code Online (Sandbox Code Playgroud)

c# nunit unit-testing moq

150
推荐指数
3
解决办法
10万
查看次数

使用NUnit Assert.Throws方法或ExpectedException属性?

我发现这些似乎是测试异常的两种主要方式:

Assert.Throws<Exception>(()=>MethodThatThrows());

[ExpectedException(typeof(Exception))]
Run Code Online (Sandbox Code Playgroud)

哪个最好?有人提供优势吗?或者仅仅是个人偏好的问题?

c# nunit unit-testing assert exception

144
推荐指数
4
解决办法
6万
查看次数

NUnit单元测试未在安装了测试适配器的测试资源管理器中显示

我已经为VS2012 + 2013安装了NUnit测试适配器.当我第一次安装适配器时,测试显示出来了,但是他们今天因某种原因停止了显示.构建,重建,清理,重新启动后,测试资源管理器中不显示任何内容.为什么会这样?我正在使用VS2013 Ultimate.

nunit

142
推荐指数
9
解决办法
11万
查看次数