Tag: mstest

MS测试:执行测试位置?

在VS 2010中的MS Test下运行测试时,如何找到执行程序集的路径等价物? 我需要知道测试的运行位置,以便我可以设置它需要的数据文件的相对路径。 我试图找到一个执行测试的相同路径,如果我使用System.Reflection.Assembly.GetEntryAssembly().Location执行程序集上的System.Reflection.Assembly.GetEntryAssembly().Location 。 谢谢你的帮助。

WPF – XamlParseException在Window类中的unit testing方法时

我正在尝试使用MSTest为我的WPF应用程序中的MainWindow类中的方法编写unit testing。 但是,我得到以下exception: System.Windows.Markup.XamlParseException:’在’System.Windows.StaticResourceExtension’上提供值引发exception。 行号“127”和行位置“32”。 —> System.Exception:找不到名为’verticalLineStyle’的资源。 资源名称区分大小写。 verticalLineStyle位于App.xaml包含的ResourceDictionary中。 我不需要这种风格来测试我试图测试的方法,但我无法超越这个。 我只是在我的unit testing中创建一个MainWindow的新实例,并尝试在其上调用实例方法。 当我尝试创建MainWindow实例时发生exception。 MainWindow被定义为public partial class MainWindow : Window 。 我该如何摆脱这个错误? 在WPF应用程序的窗口中是否有一些首选的unit testing方法?

如何获取HttpContext.Current.Server.MapPath的伪路径,该路径分配给方法unit testing中的受保护对象?

我是unit testing的新手,MSTest。 我得到NullReferenceException 。 如何设置HttpContext.Current.Server.MapPath进行unit testing? class Account { protected string accfilepath; public Account(){ accfilepath=HttpContext.Current.Server.MapPath(“~/files/”); } } class Test { [TestMethod] public void TestMethod() { Account ac= new Account(); } }

MSTest命令行设置

我们需要能够将服务器地址传递到我们的测试套件的MSTest命令行,该测试套件由TeamCity持续集成(CI)软件调用。 以前我们在C#unit testing中创建了#if常量,这使得MSBuild发生了变化。 有没有更好的办法? 这种方式看起来很漂亮。 有没有办法创建配置文件并传递要在MSTest中使用的参数?

如何测试抽象类的受保护抽象方法?

我一直在研究测试名为TabsActionFilter的抽象类的最佳方法。 我已经保证从TabsActionFilterinheritance的类将有一个名为GetCustomer的方法。 在实践中,这种设计似乎运作良好。 我遇到的一些问题是如何测试基类的OnActionExecuted方法。 此方法依赖于受保护的抽象 GetCustomer方法的实现。 我曾尝试使用Rhino Mocks嘲笑这个类,但似乎无法模仿GetCustomer假客户的回报。 显然,将方法翻转为公共将使模拟可用,但受保护感觉更合适的可访问性级别 。 暂时在我的测试类中,我添加了一个inheritance自TabsActionFilter的具体私有类,并返回一个伪造的Customer对象。 具体类是唯一的选择吗? 是否有一个简单的模拟机制,我错过了允许Rhino Mocks为GetCustomer提供回报? 作为一个注释, Anderson Imes在关于Moq的回答中讨论了他对此的看法,我可能会遗漏一些关键,但这似乎不适用于此。 需要测试的类 public abstract class TabsActionFilter : ActionFilterAttribute { public override void OnActionExecuted(ActionExecutedContext filterContext) { Customer customer = GetCustomer(filterContext); List tabItems = new List(); tabItems.Add(CreateTab(customer, “Summary”, “Details”, “Customer”, filterContext)); tabItems.Add(CreateTab(customer, “Computers”, “Index”, “Machine”, filterContext)); tabItems.Add(CreateTab(customer, “Accounts”, “AccountList”, “Customer”, filterContext)); […]

PrivateObject找不到属性

我的结构基本上看起来像这样: abstract class A { protected string Identificator { get; set; } private void DoSomething() { // … DoSomethingSpecific(); } protected abstract void DoSomethingSpecific(); } 由于我需要的复杂性,我们需要对DoSomething方法进行unit testing,以确保它以相同的方式运行。 这就是我创建以下存根的原因。 public class AStub : A { protected override void DoSomethingSpecific() { // nothing to do } } 我使用PrivateObject类来访问类A的方法和属性,实例化类AStub。 当我尝试访问属性或方法时,这工作了一段时间并且出于某种原因崩溃了。 以下代码用于测试: var sut = new CommonIodAdapterImpl(); var accessor […]

TeamCity + MSTest – 只运行失败的测试?

有没有办法只在TeamCity中的先前测试运行中运行失败的测试? 更好的是,有没有办法以某种方式运行选定的测试? 就像我们只想运行某些测试类一样。 我们可以通过另一种机制实现这一目标吗? 也许在后续的测试运行中将某种配置文件传递给MSTest? 我之所以这样说,是因为我们的员工不使用Visual Studio,但他们仍然需要运行某些测试来查看失败的原因。

为什么不推荐使用私人访问者?

它曾经是我们从其他人那里选择MSTest的首要原因,我们可以访问并测试私有方法。 现在, 在Visual Studio 2012中不推荐使用私有访问器 。 有谁知道微软为何做出这样的决定? 是因为测试私有方法不是一个好习惯吗? 另外,如果我仍然需要对我的私有方法进行unit testing,那么我怎样才能在VS 2012及更高版本中执行此操作?

C#中unit testing的生命周期是多少

在Visual Studio中的C#中完整的MSTestunit testing运行中的事件序列是什么(Ctrl + R,A)? 这是我到目前为止的想法: 1 – 运行[AssemblyInitialize] 2 – 随机运行[ClassInitialize] 3 – 运行类[TestInitialize] 4 – 从该类中随机运行[TestMethod] 5 – 运行类[TestCleanup] 为类中的每个TestMethod重复3到5 对每个测试类重复2到5 6 – 运行所有类[ClassCleanup]方法 7 – 运行[AssemblyCleanup] 但我认为VS可能会立即初始化多个类,然后随机运行TestMethods。 测试是否应该在整个测试项目或整个测试项目中自治? 了解事件的确切顺序应该回答这些问题。 更新: 我做了一些测试,发现它确实是事件发生的顺序,除了#3到5,其中任何类的任何测试都可以运行。 Visual Studio似乎一次顺序运行一个测试。 但是,在接受的答案中解释的原因不应该依赖于此。

测试 – 将忽略DeploymentItem – outputDirectory

我用 在Local.testsettings中将TestProject1 \ Config \下的所有文件复制到’TestRoot’\ TestConfig \,但它直接在Test’TestRoot’文件夹中复制文件。