我正在尝试追踪当我点击aspx页面上的特定元素时发生的错误...
在过去,我必须追踪处理该特定事件的类,并在我认为应该被击中的线上设置一个断点.在我最终找到正确的类之前,通常需要多次尝试....特别是如果类是一个隐藏在某处的用户控件...
因此,我想知道是否有任何方法可以让Visual Studio在单击aspx页面上的元素(例如按钮)后执行的下一行代码中断.我知道有一种方法可以打破任何抛出的异常,所以我想也许有类似的东西可以帮助我.
如果这种功能不可能,也许有人可以建议一种更好的方法让我快速找到我想要调试的类......
我需要将一个事件的订阅者复制到另一个事件.我可以获得一个事件的订阅者(比如MyEvent [0]返回一个委托)吗?
如果这不可能,我会使用add accessor将委托添加到列表中.那会是最好的解决方案吗?
我正在尝试使用C#将列插入现有的DataSet中.
作为一个例子,我有一个DataSet定义如下:
DataSet ds = new DataSet();
ds.Tables.Add(new DataTable());
ds.Tables[0].Columns.Add("column_1", typeof(string));
ds.Tables[0].Columns.Add("column_2", typeof(int));
ds.Tables[0].Columns.Add("column_4", typeof(string));
Run Code Online (Sandbox Code Playgroud)
稍后在我的代码中,我想在第2列和第4列之间插入一列.
DataSet有添加列的方法,但我似乎无法找到插入列的最佳方法.
我想写下面的内容......
...Columns.InsertAfter("column_2", "column_3", typeof(string))
Run Code Online (Sandbox Code Playgroud)
最终结果应该是具有包含以下列的表的数据集:column_1 column_2 column_3 column_4
而不是:column_1 column_2 column_4 column_3这是add方法给我的
肯定有办法做这样的事情.
编辑 ...只是想根据下面的一些评论澄清我正在使用DataSet做什么:
我从存储过程中获取数据集.然后,我必须向数据集添加其他列,然后将其转换为Excel文档.我无法控制存储过程返回的数据,所以我必须在事后添加列.
我一直在使用moq来模拟单元测试中的对象,我在网站上看到moq它能够模拟类和接口.
前几天我与我的一个工作伙伴进行了讨论,他们表示没有理由去模拟课程,我只应该模拟界面.
我没有真正得到答案......我似乎也无法在moq网站上找到任何答案.
一个人永远不应该嘲笑课程是真的吗?我会说不,因为如果那是真的,那么Moq甚至不会允许它......那么有时候在界面上模拟一个类更好吗?模拟类与模拟接口有什么区别?或者它真的只是一个偏好的东西?
我对单元测试的概念并不陌生,但与此同时我还没有掌握它们.
我最近在使用TDD方法编写代码时编写单元测试时遇到的一个问题是:我应该测试什么级别?
有时我想知道我是否过度使用单元测试.
在什么时候开发人员应该停止编写单元测试并完成实际工作?
在人们假设我反对使用TDD之前,我可能需要澄清这个问题...
我正在努力的是我的测试的粒度....
我希望能够使用我的单元测试来验证我的应用程序的行为...但我不太确定在哪里停止.是否有可能编写过于微不足道的测试?
我有一个表示为byte []的excel文档,我想将其作为附件发送到电子邮件中.
我在构建附件时遇到了一些麻烦.
我可以创建一个具有以下构造函数的Attachment:
(Stream contentStream, ContentType contentType)
(Stream contentStream, string name)
(Stream contentStream, string name, string mediaType)
Run Code Online (Sandbox Code Playgroud)
我的想法是从byte []创建一个MemoryStream并将其传递给创建附件的方法.
不幸的是,我看不到从MemoryStream获取预期文件名和内容类型的方法,我也看不到如何提供正确的内容类型.有纯文本,Pdf,Rtf等选项,但我没有看到立即跳出来作为我应该用于Excel文档的那个.
我能找到的最接近的是MediaTypeNames.Application.Octet,其中说明:
Octet成员指定附件包含通用二进制数据.
但是,即使这是一个使用的,除非它可以作为Stream的属性传递,那么我的发送电子邮件的方法只能发送一个byte []作为Excel文档...
是否有其他类型的流可以使用?或者我是否必须创建我自己的Stream类型,其中包含我需要的详细信息.
当然有人在那里做过这件事,当然微软会想到这个水平......
任何帮助将非常感激.
更新: 请不要投票使用将文件名作为字符串的构造函数的任何答案.我真的需要帮助使用带有Stream的那些......我想避免将文件写入磁盘,通过电子邮件发送,然后立即将其删除.由于有一种方法可以让我这样做,我想尽可能使用那个.
解决方案更新
康拉德设法找到了我要找的东西!谢谢堆人!
我只是记录建议的解决方案,以防万一在提供的链接上的内容发生了什么.
这个解决方案可以归功于www.systemnetmail.com
static void AttachmentFromStream()
{
//create the mail message
MailMessage mail = new MailMessage();
//set the addresses
mail.From = new MailAddress("me@mycompany.com");
mail.To.Add("you@yourcompany.com");
//set the content
mail.Subject = "This is an email";
mail.Body = "this content is in the body";
//Get some binary data
byte[] …Run Code Online (Sandbox Code Playgroud) 现在我开始将Mock对象的概念引入我的单元测试中.特别是我正在使用Moq框架.但是,我注意到的一件事是突然我使用这个框架测试的类显示代码覆盖率为0%.
现在我明白了,因为我只是在嘲笑这个类,它没有运行实际的类本身....但是我如何编写这些测试并让Code Coverage返回准确的结果呢?我是否必须编写一组使用Mocks的测试和一组直接实例化该类的测试.
也许我在没有意识到的情况下做错了什么?
这是我尝试单元测试一个名为"MyClass"的类的示例:
using Moq;
using NUnitFramework;
namespace MyNameSpace
{
[TestFixture]
public class MyClassTests
{
[Test]
public void TestGetSomeString()
{
const string EXPECTED_STRING = "Some String!";
Mock<MyClass> myMock = new Mock<MyClass>();
myMock.Expect(m => m.GetSomeString()).Returns(EXPECTED_STRING);
string someString = myMock.Object.GetSomeString();
Assert.AreEqual(EXPECTED_STRING, someString);
myMock.VerifyAll();
}
}
public class MyClass
{
public virtual string GetSomeString()
{
return "Hello World!";
}
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道我应该采取哪些不同的做法?
DataSet是.NET 1.0中最重要的东西之一,甚至现在使用.NET 3.5时我仍然发现自己不得不使用它们....特别是当我必须调用存储过程,它返回一个数据集然后我最终拥有手动转换为对象以使其更易于使用.
我从来没有真正喜欢过DataSet,并且发现它们很难使用...因此我倾向于将我对它们的了解保持在最低限度(可能是非常糟糕的事情!).我也喜欢将它们快速转换为对象或对象列表,以便我可以在代码中轻松操作它们.
DataSet是否按日期传递使用?随着像NHibernate这样的O/R映射器的出现,我想知道DataSet会不会消失或者还有它们的位置?目前,我是否应该留出时间重新访问DataSet并学习如何正确使用它们或者100%完成O/R映射器并完全抛弃DataSet.
DataSet是否提供NHibernate和LINQ等技术无法提供的功能?如果没有,为什么我们仍然使用它们呢?
我遇到了间歇性失败的单元测试,因为经过的时间不是我预期的.
此测试的示例如下:
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
TimeSpan oneSecond = new TimeSpan(0, 0, 1);
for(int i=0; i<3; i++)
{
Thread.Sleep(oneSecond);
}
stopwatch.Stop();
Assert.GreaterOrEqual(stopwatch.ElapsedMilliseconds, 2999);
Run Code Online (Sandbox Code Playgroud)
这种情况大部分时间都过去了,但至少有一次失败,因为:
预期:大于或等于2999但是:2998
我不明白它怎么可能不到3秒钟.我不知道Thread.Sleep或者Stopwatch是否存在准确性问题?
正如以下一些问题的更新.正在进行单元测试的场景是一个类,它允许一个方法调用一个方法来执行某些操作,如果它失败则等待一秒并调用该方法.上面显示的测试只是对正在发生的事情的近似.
假设我想调用方法DoSomething()...但是如果DoSomething()抛出异常,我希望能够重试最多调用它3次,但每次尝试之间等待1秒.在这种情况下,单元测试的目的是验证当我们请求3次重试,每次重试之间等待1秒钟时,所花费的总时间大于3秒.
我安装了Visual Studio 2008 SP1,当我在Moq Framework中使用lambda表达式时它崩溃了.
起初我认为问题是Resharper ...但是现在我已经卸载它,VS 2008仍然崩溃.我每次都能复制这个问题.
我想也许它可能是其他一些导致问题的插件而不是VS 2008 ...但我不能确定.
那么我想要找到的是Visual Studio记录发生的崩溃的地方?
不幸的是我无法找到它...有没有人知道它是否存在,如果存在,在哪里看?
提前致谢!