Tag: 断言

Assert.AreEqual失败了,但它不应该失败

我有一个非常奇怪的行为,我无法解释。 我有以下课程: public class Project { public virtual int Id { get; set; } public virtual string Name { get; set; } } 还有一个返回Project对象的方法: public Project GetByName(string Name) { using (ISession session = NHibernateHelper.OpenSession()) { Project project = session.CreateCriteria(typeof(Project)) .Add(Restrictions.Eq(“Name”, Name)) .UniqueResult(); return project; } } 我添加了一个unit testing来测试GetByName方法: [TestMethod] public void TestGetByName() { IProjectsRepository projectRepository […]

如何检查方法是否具有属性

我有一个示例类 public class MyClass{ ActionResult Method1(){ …. } [Authorize] ActionResult Method2(){ …. } [Authorize] ActionResult Method3(int value){ …. } } 现在我想要的是编写一个返回true / false的函数,可以像这样执行 var controller = new MyClass(); Assert.IsFalse(MethodHasAuthorizeAttribute(controller.Method1)); Assert.IsTrue(MethodHasAuthorizeAttribute(controller.Method2)); Assert.IsTrue(MethodHasAuthorizeAttribute(controller.Method3)); 我到了那里 public bool MethodHasAuthorizeAttribute(Func function) { return function.Method.GetCustomAttributes(typeof(AuthorizeAttribute), false).Length > 0; } 适用于Method3。 现在我怎么能以一种将字符串和类作为参数的方式来做那个generics呢?

如何防止Debug.Assert(…)显示模式对话框

我有几个使用Debug.Assert(…)的库。 我认为Debug.Assert(…)很好,我仍然希望它们执行,但我不希望它们阻止我的应用程序的执行。 理想情况下,我只希望他们在某处登录。 鉴于我无法更改库的代码(我仍然希望在调试中编译并运行断言),如何防止Debug.Assert(…)显示模式对话框? 另外,我想确保在Assert发生时主程序继续(与Ignore按钮相同的行为)。 谢谢!