Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单元测试是如何在c#测试项目中编译的?_C#_Asp.net_.net_Visual Studio_Mstest - Fatal编程技术网

单元测试是如何在c#测试项目中编译的?

单元测试是如何在c#测试项目中编译的?,c#,asp.net,.net,visual-studio,mstest,C#,Asp.net,.net,Visual Studio,Mstest,我已经阅读了关于为我的.NET4.5应用程序编写带有“测试”项目的单元测试的教程,但我不明白它们是如何运行的 当我运行测试项目中类的特定方法的单元测试时,是否为每个测试重新编译方法的整个项目 我对测试如何与正在测试的方法交互感到困惑。这些测试是自己编译的吗?我想他们一定是因为这是c#。测试是否有单独的二进制文件?您实际上无法独立运行单元测试。通常,它们将由“测试运行程序”执行,例如内置的MSTest测试运行程序或。过程如下所示: 编写测试时,使用特定属性标记测试类,例如[TestClass]或[

我已经阅读了关于为我的.NET4.5应用程序编写带有“测试”项目的单元测试的教程,但我不明白它们是如何运行的

当我运行测试项目中类的特定方法的单元测试时,是否为每个测试重新编译方法的整个项目


我对测试如何与正在测试的方法交互感到困惑。这些测试是自己编译的吗?我想他们一定是因为这是c#。测试是否有单独的二进制文件?

您实际上无法独立运行单元测试。通常,它们将由“测试运行程序”执行,例如内置的MSTest测试运行程序或。过程如下所示:

  • 编写测试时,使用特定属性标记测试类,例如
    [TestClass]
    [TestFixture]

  • 测试类被编译成DLL

  • 您可以使用VisualStudio中的菜单项启动测试运行程序(或者作为自动生成过程的一部分启动)

  • 测试运行程序加载单元测试DLL

  • 测试运行程序加载DLL中的所有类型,并使用反射来定位具有指示其包含测试的magic attibute的类型(类)

  • 测试运行程序实例化测试类/夹具

  • 测试运行程序迭代DLL中具有
    [test]
    [TestMethod]
    属性的方法

  • 测试运行程序使用调用每个方法

  • 测试运行程序在测试运行程序UI中显示其测试结果,或将其输出到报告


  • 您的问题以何种方式针对ASP.Net?(我怀疑你真正的问题是“如果我自己不创建EXE,如何执行DLL/assembly中的代码”-如果是这样的话,答案是因为有其他人可以创建加载此类程序集的可执行文件并从中运行代码,而无需链接到此类程序集)嗯,我必须添加对类库(项目)的引用正在我的测试项目中进行测试。那么,我的测试项目在运行之前是否加载了该项目的已编译dll呢?从构建或执行的角度来看,单元测试项目绝对没有什么特别之处——它的行为与代码从另一个程序集调用方法的任何其他情况相同。。。单元测试项目唯一的“特殊”之处是,它们被配置为使用TestRunner作为可执行文件来加载和运行所有标记为
    TestMethodAttribute
    的方法。