1.NUnit2.0详细使用方法
http://kb.cnblogs.com/page/41729/

2.单元测试框架NUnit 之 assertions 断言
http://archive.cnblogs.com/a/2215305/

------------------------------------------------------------------------------

3.测试语法之属性介绍
http://www.cnblogs.com/lyj/archive/2008/09/03/1283390.html
4.测试语法之断言介绍
http://www.cnblogs.com/lyj/archive/2008/09/07/1286372.html

posted @ 2012-04-01 10:51 jingjunfeng 阅读(31) 评论(2) 编辑

由于最近中如插入到一个WPF的项目中。最近碰到了一个小问题,下面对问题及解决方法进行了记录。

 

历史原因:

1. 项目开始我安装了AnkhSvn-2.1.10129.msi 版本,并且是基于TortoiseSVN-1.6.5.16974-win32-svn-1.6.5.msi之上。

2. 发现发现了一些小问题,卸载AnkhSvn-2.1.10129

3. 安装VisualSVN-2.5.3.msi,提示TortoiseSVN 有更新版本是不是需要升级。我选择不升级。

 

 问题描述:

 1.WPF设计界面空白。

 2. 打开Visual Studio 2010 旗舰版,加载完项目就提示“visual studio 2010 遇到了异常,可能是由某个扩展导致”。Visual Studio并且时不时重启。

 

解决问题过程:

1. 我首先想到的是没有升级TortoiseSVN导致的,于是用TortoiseSVN-1.7.5.22551-win32-svn-1.7.3.msi进行了升级。不幸,没有命中。

2. 谷歌,百度之后 都说“装了VS2010后,安装2008MSDN导致这个问题”,看过他们的处理方法,发现不是同类问题。

3. 无奈之下,我想到了是不是 安装次序有问题。卸载后,这次我先安装TortoiseSVN-1.7.5.22551-win32-svn-1.7.3,再安装的VisualSVN-2.5.3。还是没有命中。

4. 卸载掉两个插件,看问题是不是还存在。卸载后,发现WPF设计界面还是空白,但是已经不提示“visual studio 2010 遇到了异常,可能是由某个扩展导致”。

5. 我对Visual Studio 2010 进行“修复/重装”。发现WPF设计界面已经正常。

6. 重新安装TortoiseSVN-1.7.5.22551-win32-svn-1.7.3VisualSVN-2.5.3

 

打开项目,发现一切OK


总结:从解决问题的过程发现还是有些问题的。我们其实应该直接从过程4开始一步一步的排除,不应该自己想当然的去认为问题的所在。至于发生这个问题的本质,应该是安装AnkhSvn-2.1.10129时,改变了Visual Studio 2010 的一些内容。直接换为VisualSVN-2.5.3,就出现了上面的问题。为了证明我的想法是正确的,附图一张:


 

相信用过的同学都知道:AnkhSvn-2.1.10129 安装后是出现在源代码管理中,可以供我们在当前源代码管理插件中选择的。而ViaualSVN 是作为一个单独的选项和源代码管理是平行的。



 



posted @ 2012-02-24 18:01 jingjunfeng 阅读(112) 评论(0) 编辑
最近随手翻看了一下两年前买的《Head First HTML 与CSS、XHTML》一书,现在看来书是简单了点,比较适合网页制作的初学者使用。
下面是我随手记下的一些东西,以便之后,闲来阅读下(比较凌乱)。
1. 先给<body>设置一种大小接着把别的字体大小都设成它的相对值。(这样可以只更改一个字体,而使整个网站的字体大小跟着变化)
2. <del> 元素: 表示应该删掉的内容。
3. <ins> 元素: 表示应该插入的内容。
4. line-height 属性: 控制行间距(line-height:1 表示 1倍行间距)。
5. media 属性:设置用于什么样的设备
6. text-align 属性:只能用于块元素而不能用于内联元素。
7. <table summary="value"> value 表示摘要,使屏幕读取器读取描述。
8. <caption>value</caption> value 表示table 的标题。
9. border-collapse:collapse 将相邻的两个边框合为一个边框。
10.<fieldset> 元素用于 对输入元素进行分组。<legend>value</legend> value 标题
11.<select multiple="multiple"> 属性表示可以多选。
12.<meta name="robots" content="noindex,nofollow"/> 不被搜索引擎列出。
13.<q> 元素:简短的引用。
14.<blackquote> 块引用。
15.<ol start="value"> ordered List 有序列表,value 指定列表顺序
16.<ul> unordered List <li> Listitem.
17.自定义列表<dl><dt></dt><dd></dd></dl>
18.<address>,<em>,<strong>
19.<pre> 格式化文本
20.使用<a>元素创建目的地 例如:目标页面中<h2 id="chai"> Chai Tea</a><h2> 链接<a href="index.htm#chai">see chai tea</a>
21.boder-bottom样式不仅可以用于div,span 也可以用至h1,p等。其线延长至网页边沿。text-decoration 可以设置文本的下划线。
22.样式的优先级 1>元素 2 继承 3 默认值 同样的属性选择css文件里面最后的一个值。
23.font-family 设置字体系列。
posted @ 2012-01-28 11:43 jingjunfeng 阅读(22) 评论(0) 编辑
 

多年后才发现{

在asp.net 中为DropDownList赋值的时候,原来是可以这么用的: 

 

DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue("值"));

枉我为它忙的一段段,bs!

posted @ 2011-12-21 21:23 jingjunfeng 阅读(13) 评论(0) 编辑
说起json怎么说呢,听说已久但是就是未使用过;
前天合作伙伴给我个接口使用json传输数据的,这让我不得不现学现用。
首先我们应该对json脚本有个初步的认识。
下面脚本是我从网上直接找的,如果有和我一样的,可以在页面中运行下以便对json有个初步的认识。
<script type="text/javascript">
    function test() {
        //直接声明json数据结构 
        var myJSONObject = { "bindings": [
        { "ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*" },
        { "ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*" },
        { "ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*" }
    ]
        };
        //声明字符串,可对比一下json文本与我们正常文本的区别 
        var normalstring = '[{persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]}]';
        var jsontext = '[{"persons":[{"name":"jordan","sex":"m","age":"40"}, {"name":"bryant","sex":"m","age":"28"}, {"name":"McGrady","sex":"m","age":"27"} ]}]';
        //调用eval函数转换为json对象, 
        var myE = eval(normalstring);
        document.writeln(myE + '<br><br>');
        //将json对象转换为字符串 
        var text = JSON.stringify(myE);
        //对比转换后的json文本与声明的文本区别 
        document.writeln('转换后的json文本:' + text + '<br><br>声明的json格式文本' + jsontext + '<br><br>声明的普通格式文本' + normalstring + '<br><br>');
        //当安全比较重要的时候使用JSON解析就好一些。JSON解析只会识别JSON文本并且它更安全,下面调用json的parse函数对文本数据转换生成json数据结构 
        var myData = JSON.parse(jsontext);
        document.writeln("json 对象:" + myData + '<br><br>');
        //下面是对json对象的增删查改操作 
        //声明json对象 
        var jsonObj2 = { persons: [{ name: "jordan", sex: "m", age: "40" }, { name: "bryant", sex: "m", age: "28" }, { name: "McGrady", sex: "m", age: "27"}] };
        var persons = jsonObj2.persons;
        var str = "";
        var person = { name: "yaoMing", sex: "m", age: "26" };
        //以下为json对象的操作,去掉注释可以查看操作结果 
        //jsonObj2.persons.push(person);//数组最后加一条记录 
        //jsonObj2.persons.pop();//删除最后一项 
        //jsonObj2.persons.shift();//删除第一项 
        jsonObj2.persons.unshift(person); //数组最前面加一条记录 只要适合Javascript的方法都是可以用在JSON对象的数组中的!所以还有另外的方法splice( )进行crud操作! //删除 
        //jsonObj2.persons.splice(0,2);//开始位置,删除个数 
        //替换不删除 
        var self = { name: "tom", sex: "m", age: "24" };
        var brother = { name: "Mike", sex: "m", age: "29" };
        jsonObj2.persons.splice(1, 0, self, brother, self); //开始位置,删除个数,插入对象 
        //替换并删除 
        //jsonObj2.persons.splice(0,1,self,brother);//开始位置,删除个数,插入对象 
        for (var i = 0; i < persons.length; i++) { var cur_person = persons[i]; str += cur_person.name + "'sex is " + cur_person.sex + " and age is " + cur_person.age + "<br><br>"; }
        document.writeln(str);
        //转换为json文本 
        var myjsonobj = JSON.stringify(jsonObj2);
        document.writeln(myjsonobj);
    }
</script> 
查看完结果,希望你和我一样对json 有初步的认识。
下面就是我们在后台代码中获取json中值的问题了。
在FrameWork3.5及以上版本中,可以直接使用以下代码:
//先在项目中添加System.Web.Extensions引用
//using System.Web.Script.Serialization;
JavaScriptSerializer serializer = new JavaScriptSerializer();
Dictionary<string, object> json = (Dictionary<string, object>)serializer.DeserializeObject(
    "{name: 'zswang', forum: 'c#'}");
object value;
if (json.TryGetValue("name", out value))
    Console.WriteLine(value); // 输出:zswang
如果在低版本的FrameWork中使用,大家可以参考 http://www.yuuzle.com/csharp-json-serializer-tool-json-net.html
posted @ 2011-12-21 21:17 jingjunfeng 阅读(22) 评论(0) 编辑
 1 <asp:GridView ID="gvFriendInvite" runat="server" EnableModelValidation="True" 
 2                CellPadding="4" ForeColor="#333333">
 3             <AlternatingRowStyle BackColor="White" />
 4             <Columns>
 5                
 6                 <asp:BoundField DataField="SendDateTime" HeaderText="邀请时间" >
 7                 <ItemStyle CssClass="lpadding" />
 8                 <HeaderStyle HorizontalAlign="Center" Width="160px" />
 9                 </asp:BoundField>
10                 <asp:BoundField DataField="InviteMail" HeaderText="被邀请人" >
11                 <HeaderStyle HorizontalAlign="Center" Width="200px"/>
12                 <ItemStyle  CssClass="lpadding"/>
13                 </asp:BoundField>
14 
15                 <asp:BoundField DataField="IsRegister" HeaderText="注册时间" >
16                 <HeaderStyle HorizontalAlign="Center" Width="80px"/>
17                 <ItemStyle HorizontalAlign="Center" />
18                 </asp:BoundField>
19                 <asp:BoundField DataField="RegisterName" HeaderText="注册会员" >
20                 <HeaderStyle HorizontalAlign="Center" Width="120px"/>
21                  <ItemStyle  CssClass="lpadding" />
22                 </asp:BoundField>
23                 <asp:BoundField DataField="IsFristLodging" HeaderText="首日入住" >
24                 <HeaderStyle HorizontalAlign="Center" Width="80px"/>
25                 <ItemStyle HorizontalAlign="Center"/>
26                 </asp:BoundField>
27                 <asp:BoundField DataField="IsLodgingECoupons" HeaderText="绑特价券" >
28                 <HeaderStyle HorizontalAlign="Center" Width="80px"/>
29                 <ItemStyle  HorizontalAlign="Center"/>
30                 </asp:BoundField>
31                 <asp:BoundField DataField="IsLodgingSendPoint" HeaderText="入住邀请人送积分" >
32                 <HeaderStyle HorizontalAlign="Center" Width="120px"/>
33                 <ItemStyle HorizontalAlign="Center"/>
34                 </asp:BoundField>
35                 <asp:BoundField DataField="Remark" HeaderText="备注" >
36                 <HeaderStyle HorizontalAlign="Center" Width="400px"/>
37                 <ItemStyle  CssClass="lpadding"/>
38                 </asp:BoundField>
39             </Columns>
40             <EditRowStyle BackColor="#2461BF" />
41             <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
42             <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
43             <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
44             <RowStyle BackColor="#EFF3FB" />
45             <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
46         </asp:GridView>    
 

今天在使用GridView 的时候发现了如下的问题:在IE8,IE9 及Chrome 和firefox 中GridView 显示一切正常,但是在IE7中显示的却有点夸张。

后来才发现是GridView列宽度 设置的问题:

我们可以在ItemStyle中设置<ItemStyle CssClass="lpadding" Width="160px" />,
也可以在HeaderStyle中设置 <HeaderStyle HorizontalAlign="Center" Width="160px"/>。
在ItemStyle设置宽度后在IE8,IE9 及Chrome 和firefox 中 显示是没有问题一切正常的。
但是在IE7 中就显示的有点小问题了(不会按照你设置的宽度显示)。要解决这个问题其实很简单,即宽度在HeaderStyle 设置。

posted @ 2011-10-27 12:45 jingjunfeng 阅读(47) 评论(0) 编辑
摘要: View Code 1publicclassA2{3publicstaticintP4{5get{returnP;}//未处理System.StackOverflowException确保您没有无限循环或无限递归6}78publicA(){}9}1011publicclassB:A12{13Aa;14publicB(){15a=newB();//}//未处理System.StackOverflowException确保您没有无限循环或无限递归16}17}读上面的代码,你能发现什么问题呢?阅读全文
posted @ 2011-06-02 20:28 jingjunfeng 阅读(29) 评论(0) 编辑
摘要: 存储的区别: 值类型的实例经常会存储在栈上的。但是也有特殊情况。如果某个类的实例有个值类型的字段,那么实际上该字段会和类实例保存在同一个地方,即堆中。 不过引用类型的对象总是存储在堆中。如果一个结构的字段是引用类型,那么只有引用本身是和结构实例存储在一起的(在栈或堆上,视情况而定)。函数参数传递时的区别: 值类型是把自己的值复制一份传递给别的函数操作.无论复制的值怎么被改变.其自身的值是不会改变的 而引用类型是把自己的内存地址传递给别的函数操作.操作的就是引用类型值的本身.所以值被函数改变了. 一般引用类型可以派生出新的类型,而值类型不能;引用类型可以包含null值,值类型不能(string 阅读全文
posted @ 2011-05-12 20:08 jingjunfeng 阅读(22) 评论(0) 编辑
摘要: 封装 就是将对象用户不必了解的实现细节隐藏起来的一种语言能力。封装的核心就是对象内部数据不应该从公共接口直接访问。如果想改变对象的状态就要使用访问方法和修改方法。在C#中封装是通过访问修饰符在语法级别上实现的。继承 是指基于已有类定义来创建新类定义的语言能力。多态 是语言以同一种方式处理相关对象的能力虚拟成员 是定义默认实现基类中的成员,它可能被派生类改写(override)。抽象方法 是基类中不能提供默认实现的成员,它提供签名。抽象方法必须被派生类重写。嵌套类型 是直接声明在类或者结构作用域中的类型。嵌套类型 可以使用private 修饰符,而非嵌套类型只能用public 或者interna阅读全文
posted @ 2011-04-17 18:47 jingjunfeng 阅读(55) 评论(0) 编辑
摘要: 每一个可执行应用程序必须包含一个定义了Main()方法的类,这个方法用来表示应用程序的入口点。定义Main()方法的类叫做应用程序对象。根据惯例,返回值返回0表示程序正常结束,而其他值表示错误发生。(要知道,值0是自动返回的,即使Main()返回的是个Void)。要注意所有的C#关键字都是小写的。使用System.Environmet类型的静态方法GetCommandLineArgs()访问命令行参数。这个类允许我们通过不同的静态成员获得大量有关运行.NET 应用程序的操作系统细节。例如:GetLogicalDrives(),获取本机驱动器以及其他一些有用的细节信息。命令行用户交互CUI(Co阅读全文
posted @ 2011-04-17 18:43 jingjunfeng 阅读(32) 评论(0) 编辑