如何使用Assert(或其他Test类?)来验证是否抛出了异常?
我正在尝试在我的机器上安装的TeamCity上运行我的测试.
System.InvalidOperationException
:实体框架提供程序类型" 为" 'ADO.NET提供程序无法加载.确保提供程序程序集可用于正在运行的应用程序.
System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer
Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
System.Data.SqlClient
我没有参考System.Data.Entity
任何我在codeplex上建议升级到EF6的项目.
所以,我不知道为什么我会得到这个例外.当我从VS运行测试时,我没有得到任何这样的异常.
我确实尝试将CopyLocal设置为false然后再次设置为true ..但这似乎也不起作用.
更新
我的app.config有以下内容.这会导致一些我不理解的行为吗?
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我在teamcity中得到以下stacktrace.
[MSTest] IntegrationTests.CrudTest+QuestionTest.Create
[03:59:11][IntegrationTests.CrudTest+QuestionTest.Create] Initialization method IntegrationTests.CrudTest+QuestionTest.Initialize threw exception. System.InvalidOperationException: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' for the 'System.Data.SqlClient' …
Run Code Online (Sandbox Code Playgroud) .NET有很多单元测试框架.我找到了这个小功能比较:http://xunit.github.io/docs/comparisons.html
现在我要为我们选择最好的一个.但是怎么样?有关系吗?哪一个是最具前瞻性的证据,背后有一个不错的动力?我应该关心这些功能吗?虽然xUnit似乎是最现代的,专为.NET设计,但NUnit似乎再次被广泛接受.MSTest再次集成到Visual Studio中......
当我使用MSTest Framework,并复制Selenium IDE为我生成的代码时,MSTest无法识别[TearDown]
和[SetUp]
.有什么替代方案?
这个测试怎么会失败?
[TestMethod]
public void Get_Code()
{
var expected = new List<int>();
expected.AddRange(new [] { 100, 400, 200, 900, 2300, 1900 });
var actual = new List<int>();
actual.AddRange(new [] { 100, 400, 200, 900, 2300, 1900 });
Assert.AreEqual(expected, actual);
// Assert.AreSame(expected, actual) fails
// Assert.IsTrue(expected.Equals(actual)) fails
}
Run Code Online (Sandbox Code Playgroud) 我安装了新的Visual Studio 2012 Ultimate.
我用我的解决方案创建了一个测试项目,它包含一些默认的单元测试.但是,右键单击新方法不再显示"创建单元测试"上下文菜单.
请参阅Visual Studio 2010 Ultimate:
和Visual Studio 2012旗舰版:
知道为什么会这样吗?
更新:
Visual Studio 2012和2013的解决方案:
.net unit-testing mstest visual-studio-2012 visual-studio-2013
我正在使用Visual Studio 2010 Beta 2.我有一个[TestClass]
,有一个[TestInitialize]
,[TestCleanup]
有几个[TestMethods]
.
每次运行测试方法时,都会运行初始化和清理方法!
我的印象中[TestInitialize]
和[TestCleanup]
应只运行一次,每次当地试运行.
那是对的吗?如果没有,这样做的正确方法是什么?
c# mstest visual-studio-2010 visual-studio vs-unit-testing-framework
我有一些单元测试,希望'当前时间'与DateTime不同.现在我不想改变计算机的时间.
实现这一目标的最佳策略是什么?
NUnit有一个名为Values的功能,如下所示:
[Test]
public void MyTest(
[Values(1,2,3)] int x,
[Values("A","B")] string s)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
这意味着测试方法将运行6次:
MyTest(1, "A")
MyTest(1, "B")
MyTest(2, "A")
MyTest(2, "B")
MyTest(3, "A")
MyTest(3, "B")
Run Code Online (Sandbox Code Playgroud)
我们现在正在使用MSTest,是否有任何相同的功能,以便我可以使用多个参数运行相同的测试?
[TestMethod]
public void Mytest()
{
// ...
}
Run Code Online (Sandbox Code Playgroud) 当我在执行测试之前构建单元测试项目时,测试输出被复制到TestResults文件夹,然后执行测试.我遇到的问题是并非Debug/bin目录中的所有文件都被复制到TestResults项目中.
如何将复制到Debug/bin目录的文件也复制到TestResults文件夹?
mstest ×10
c# ×8
unit-testing ×7
.net ×2
nunit ×2
assert ×1
datetime ×1
mbunit ×1
selenium ×1
systemtime ×1
teamcity-7.1 ×1
xunit.net ×1