标签: vs-unit-testing-framework

单元测试中的模型状态验证

我正在为这样的控制器编写单元测试:

public HttpResponseMessage PostLogin(LoginModel model)
{
    if (!ModelState.IsValid)
        return new HttpResponseMessage(HttpStatusCode.BadRequest);
}
Run Code Online (Sandbox Code Playgroud)

该模型看起来像:

public class LoginModel
{
    [Required]
    public string Username { set; get; }
    [Required]
    public string Password { set; get; }
}
Run Code Online (Sandbox Code Playgroud)

然后我就像这样进行单元测试:

[TestMethod]
public void TestLogin_InvalidModel()
{
    AccountController controller = CreateAccountController();

    ...
    var response = controller.PostLogin(new LoginModel() {  });

    Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);

}
Run Code Online (Sandbox Code Playgroud)

实际上ModelState已经过验证......这对我来说很奇怪,因为这两个字段都是必需的......有人可以建议吗?

c# unit-testing model-validation vs-unit-testing-framework asp.net-web-api

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

什么可能导致Visual Studio单元测试中的System.TypeLoadException?

我有一个编译好的C#.NET类库MyClassLibrary.我正在尝试为它创建一个单元测试项目(使用Visual Studio单元测试框架,使用Visual Studio 2010).类库中确实有大类,但每当我针对最简单的类运行最简单的测试时,我会得到以下异常:

测试方法MyClassLibraryTest.MyClassLibraryTests.MySimpleClassTest引发异常:System.TypeLoadException:无法从程序集"MyClassLibrary,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null"加载类型"MyClassLibrary.MySimpleClass".

我正在处理的所有项目都在同一个解决方案中,所有项目都是针对.NET 4.0编译的.所有这些都在Windows 7 64位计算机上.

这是奇怪的部分:当我" 运行 "测试时,我得到上述错误.但是当我" 调试 "测试时,它运行正常.为什么?

c# visual-studio-2010 vs-unit-testing-framework

26
推荐指数
3
解决办法
4万
查看次数

.net核心项目代码覆盖视觉工作室2017

我正在使用Visual Studio Enterprise 2017来开发我的.net核心项目.

我的解决方案还有一些单元测试项目,我想查看我目前的代码覆盖率.

当我单击测试 - >分析代码覆盖率 - >所有测试时.我的所有单元测试都在运行,但在代码覆盖率结果中,它只报告了我的单元测试项目的代码覆盖率,这对我没有任何意义.

问题1:你们和我一起遇到同样的问题吗?对此有何解决方案?我还需要在VSTS中设置构建定义以报告代码覆盖率.

在此输入图像描述

问题2:当我右键单击调试我的单元测试时.它执行我的所有单元测试.这是VS2017中的错误吗?

Update1:​​我找到了这个主题:https://github.com/Microsoft/vstest/issues/597

code-coverage xunit vs-unit-testing-framework visual-studio-2017

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

VS2017无法加载文件或程序集Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll或其依赖项之一

当试图打开旧的解决方案时,VS2017有一个旧的单元测试项目在构建时给我一个问题.

构建此测试项目时,我不断收到以下错误:

无法加载文件或程序集'file:/// C:\ Projects\MyProj\Test\DAL\UnitTestProj\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll'或其依赖项之一.该系统找不到指定的文件.

我检查了项目的引用,它似乎是引用Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll.此外,没有代码错误.我怎么能弄清楚它是否是它无法找到的依赖项之一?

.net asp.net visual-studio vs-unit-testing-framework visual-studio-2017

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

安装.NET 4.5后,以前的Unit-Test项目无法构建

我有一个.NET 4.0 WPF解决方案,其中包含一个单元测试项目,用于测试视图模型中使用的不同命令.一切都很好.然后我安装了.NET framework 4.5然后安装了VS2012,并开始收到如下错误消息 -

XYZProject.UsersViewModel_Accessor.AddUserToAccountsCommand' is not supported by the language

在安装VS2012之前UnitTestFramework.dll,引用了 -

C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\

被改为引用 -

C:\Program Files\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v4.0

所以它从VS2012中获取了引用,我手动恢复了该引用.但没有运气.

AddUserToAccountsCommand是一个ICommand驻留在PresentationCore.dll.NET 4.0中的对象,但是System.dll在.NET 4.5中.所以我也检查了这些参考文献,它们似乎就像以前一样.

错误消息仅显示创建测试目标的位置,如Access,例如UsersViewModel_Accessor,表示以下代码生成错误 -

UsersViewModel_Accessor target = new UsersViewModel_Accessor();
Assert.IsTrue(target.AddUserToAccountsCommand.CanExecute(null), "Failed to perform can exetuce of add user command");
target.AddUserToAccountsCommand.Execute(null);  
Run Code Online (Sandbox Code Playgroud)

但如果使用viewmodel类型直接创建测试目标,如下所示 -

UsersViewModel target = new UsersViewModel();
Assert.IsTrue(target.AddUserToAccountsCommand.CanExecute(null), "Failed to perform can exetuce of add user command");
target.AddUserToAccountsCommand.Execute(null);  
Run Code Online (Sandbox Code Playgroud)

没有错误发生,项目构建成功.那么,有人可以分享任何想法吗? …

wpf .net-4.0 icommand vs-unit-testing-framework .net-4.5

19
推荐指数
1
解决办法
1739
查看次数

使用.runsettings从代码覆盖率中排除程序集

在为包含多个项目的解决方案运行代码覆盖时,我注意到Code Coverage还包括我的测试程序集.

我发现了一篇文章,建议使用.runsettings的以下模板:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CodeCoverage>
            <ModulePaths>
              <Include>
                <!-- Do not specify any includes. This will attempt to include all binaries -->
              </Include>
              <Exclude>
                <!-- Exclude modules that aren't to be processed, by their name / path -->
                <ModulePath>.*Tests\.dll$</ModulePath> <!-- I put it here -->
              </Exclude>
            </ModulePaths>

            <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
            <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
            <CollectFromChildProcesses>True</CollectFromChildProcesses>
            <CollectAspDotNet>False</CollectAspDotNet>
            <!--
Additional paths to search for symbol files. Symbols must be found for modules to …
Run Code Online (Sandbox Code Playgroud)

.net unit-testing code-coverage visual-studio vs-unit-testing-framework

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

DeploymentItem不部署文件

MS unit testing framework用来测试我的C#库.我必须打开一个我正在部署的文件DeploymentItem attribute.但它没有将文件部署到Test部署目录.

在我的Unit-test项目中,我TestFile在这个文件夹中创建了一个文件夹,里面有多个文件,比如a.txt,b.txt.

现在在我的Unit-test类中,我添加了DeploymentItem属性.但文件没有被复制.

这是我的代码.

[TestClass]
[DeploymentItem("TestFile")]
public class CustomLibraryTest
{
    public TestContext TestContext { get; set; }

    [TestMethod]
    [DeploymentItem(@"TestFiles\a.txt")]  // THis should deploy a.txt to test deployment directory
    {
        var path = TestContext.TestDeploymentDir + "a.txt";
        // Now when I debug this unit-test, and open path in explorer,
        // a.txt is not present in "TestResults\Deploy_fhafeez 2013-05-28 13_02_37\Out" folder
    }
}
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

c# unit-testing deploymentitem vs-unit-testing-framework visual-studio-2012

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

Visual Studio 2012/Resharper单元测试不运行

我以前能够在VS 2012中运行单元测试.现在,突然之间,无论我尝试"运行"还是"调试"任何单元测试,单元测试会话窗口都会将测试置于"待定"状态,但是从来没有真正执行它.

我已经尝试重新启动我的开发环境,甚至重新启动计算机.没变.

那么秘密设置在哪里说"让单元测试冻结'待定'"?

c# resharper unit-testing vs-unit-testing-framework visual-studio-2012

16
推荐指数
3
解决办法
9433
查看次数

通配符测试容器到mstest.可执行程序

是否可以将通配符testcontainer值传递给命令行mstest.exe而不是手动硬编码多个testcontainer值?如

Mstest.exe/testcontainer:测试 .dll

我想在我们的tfs 2012升级template.xaml构建过程中手动调用mstest,因为它的行为类似于在默认模板中运行测试的自动发现方式.

如果没有,这可以写入bat脚本循环从给定的开始文件夹中的文件夹?

tfs mstest tfsbuild vs-unit-testing-framework visual-studio-2012

15
推荐指数
1
解决办法
6905
查看次数

正确的方法来单元测试对象的类型

使用Visual Studio单元测试框架,我正在考虑两个选项:

Assert.AreEqual(myObject.GetType(), typeof(MyObject));
Run Code Online (Sandbox Code Playgroud)

Assert.IsInstanceOfType(myObject, typeof(MyObject));
Run Code Online (Sandbox Code Playgroud)

这两个选项之间有区别吗?一个比另一个更"正确"吗?

这样做的标准方法是什么?

.net c# vs-unit-testing-framework

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