我想要包含一个javascript引用,如:
<script src="@Url.Content("~/Scripts/jqueryFoo.js")" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
如果我有一个Razor View,那么在不必将它添加到Layout的情况下包含它的正确方法是什么(我只需要在一个特定的View中,而不是所有的都需要它)
在aspx中,我们可以使用内容占位符..我发现在mvc中使用aspx而不是Razor视图的旧示例..
我想知道为什么'部分类'概念甚至存在于C#/ VB.NET中.我正在开发一个应用程序,我们正在阅读一本(实际上是非常好的)书,它与我们正在实施的开发平台相关.在本书中,作者提供了围绕平台API的大型代码库/包装器,并解释了他在教授有关平台开发的不同主题时如何开发它.
无论如何,长话短说 - 他在整个地方使用部分类,作为在C#(IMO)中伪造多重继承的一种方式.为什么他不只是把课程分成多个,而且使用构图超出了我.他将拥有3个"部分类"文件来构成他的基类,每个文件有3-500行代码......并且在他的API中执行了几次.
你觉得这有道理吗?如果是我,我会跟踪SRP并创建多个类来处理不同的必需行为,然后创建一个基类,将这些类的实例作为成员(例如组合).为什么MS甚至将部分类放入框架中?他们删除了在C#中扩展/折叠每个范围级别的所有代码的能力(这在C++中是允许的),因为它显然只是允许坏习惯 - 部分类,IMO,同样的事情.我想我的问题是:你可以向我解释什么时候有合理的理由使用分段课程吗?
编辑:我知道对于Web/WinForms,别无选择.但除此之外?为什么MS没有把一些不同的关键字用于粘合代码 - genn'ed类?或者真的有一个合理的设计方案值得吗?
我不是说这是一个咆哮/战争线程.老实说,我想在这里学点东西.应该在代码设计中何时使用部分类?简单的问题,无需关闭
谢谢
我们是一家从事.NET LOB开发工作的MS商店.我们还为我们的CRM应用程序使用MS Dynamics ...所有开发人员目前都在使用VS/SQL Server 2008.我们也使用VSS,但是每个人都讨厌它在工作中并且很快就会出局.
我们正在开始整个团队的TDD实施计划(〜十几个人).我已经获得TeamCity设置并使用2008 sln构建器成功运行我的第一个自动构建,并使用同事已设置的SVN进行源代码控制分析.在演示管理时,我认为他们开始购买我的蛇油,并提出了调查TFS的建议.
这让我对TDD架构的计划产生了不小的影响.尽管如此,因为我一直认为TFS太昂贵而且对我们的团队来说不值得(而且我在其他商店也看到了相同的情况).我觉得MS在TDD/CI领域已落后多年,第三方产品可能更好,更成熟......我还需要做很多研究,但我想我会来这里看看如果有人实际使用过两个系统.
我意识到TFS包含的内容远远多于构建服务器......但我不想至少故意将这个问题过于宽泛.使用TFS/TFB代替TeamCity的实际利弊是什么 - 例如,我们会失去/获得哪些好处?有没有人在这里实际使用过这两个系统(TFS for TDD/CI和TeamCity/SVN)并且可以从实际的角度说话?
我已经对这个主题做了一些搜索,我在SO上找到的一篇帖子提到TFB的缺点是它只支持MSBuild.我打算在TeamCity上使用FinalBuilder; 看来它也支持TFS ......
谢谢你的建议
编辑:有没有人使用TFS作为他们的Build/CI服务器,可以告诉成功/失败的故事?
我怎么能在Moq做到这一点?
Foo bar = new Foo();
Fake(bar.PrivateGetter).Return('whatever value')
Run Code Online (Sandbox Code Playgroud)
我似乎只能找到如何模拟通过框架创建的对象.我想在我创建的具体对象上只模拟一个方法/属性.
在TypeMock中,我会这样做Isolate.WhenCalled(bar.PrivateGetter).Returns('whatever value').
有任何想法吗?
我在这个具体问题的教程中找不到多少..
所以我有一个名为'Job'的类,它有公共ctors和一个公共Run()函数.类中的所有内容都是私有的,并封装在类中.(你可能还记得这里的老帖子只测试中型班级的公共方法吗?这些回复对我帮助很大)
这个Run()方法做了很多事情 - 将excel文件作为输入,从中提取数据,向第三方数据供应商发送请求,获取结果并将其放入数据库并记录开始/结束工作.
此Job类在其run方法中使用3个单独的接口/类,(IConnection将连接到第三方供应商并发送请求,IParser将解析结果,IDataAccess将结果保存到数据库).所以现在,我的Run()方法中唯一真正的逻辑是提取excel输入并将其发送到其他类的链中.我创建了3个模拟类,并在Job类ctor上使用DI,一切都很好,花花公子......
除了 - 我仍然有点失去了如何测试我的Run()方法 - 因为它是无效的,并没有返回任何东西......
在这种情况下,我应该向Run()方法添加一个返回值,该方法返回从Excel文件中提取的记录数量吗?因为这是现在该函数中唯一完成的逻辑..这不会在实际代码中处理,但会在单元测试中...这对我来说似乎有点臭 - 但我是一个新的真正的TDD关注......
第二个问题 - 我应该创建一个名为IExcelExtractor的第四个类,它为我做了那个逻辑吗?或者这是一类爆炸?
即使我做了后者,如果它返回void我将如何测试我的Run()函数,并且它的所有工作都是由真正无效的模拟对象执行的?我能理解我的函数是否有一个有意义的返回值......但在这种情况下我很困惑.
非常感谢你阅读所有这些,如果你做到这一点.
我正在使用NLog并遵循建议的模式,在每个类上都有一个日志声明,以便能够跟踪哪个类/方法已写入日志.我发现每次日志写入都有一点顶级"堆栈跟踪"非常有用.
我的代码看起来像这样:
class SomeClass {
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
void DoStuff() {
logger.Debug("stuff"); }
}
Run Code Online (Sandbox Code Playgroud)
我最近要求我的单个项目写入3个单独的日志文件,为此,我添加了多个记录器和目标,如下所示:https://stackoverflow.com/a/21711838/191206
但是,现在在我的日志文件中,我丢失了类级名称.它现在只写我在NLog.config中指定的日志名称.我已经考虑过简单地通过调用来添加方法名称
System.Reflection.MethodBase.GetCurrentMethod(); // use Name property
Run Code Online (Sandbox Code Playgroud)
或像这样使用反射中的其他东西
但是,我想知道NLog是否有内置的东西我错过了?Debug()方法我只看到编写字符串的能力,带参数和可选的格式化..
这是内置到NLog?
我很好地掌握了单元测试,DI,模拟以及所需的所有设计主要优点,以尽可能接近完整的代码覆盖范围(单一责任主体,在我编码时考虑'我将如何测试'等等. ..).
我最近的应用程序,我没有编写真正的TDD代码.在编写代码时我记住了单元测试,并在编写代码,重构等之后编写了我的测试.当它很容易做时我做了TDD ...但是我没有像我现在这样做......这是我第一个充分利用DI,模拟框架等的项目,以及第一个完全代码覆盖的项目 - 随着我的进展,我从中学到了很多东西.我很想分配到我的下一个项目,所以我可以从头开始完全编写TDD代码.
我知道这是一个广泛的问题,我已经通过示例和XP Unleashed订购了TDD,但我希望简要概述一下如何设计/编写一个大型应用程序来进行TDD.
你是否编写了整个应用程序,只使用了存根代码?(例如,编写所有函数签名,接口,结构,并编写整个应用程序但不编写任何实际实现)?我可以想象它适用于中小型,但这在大型应用程序中是否可行?
如果没有,你会如何编写系统中最高级别功能的第一次单元测试?让我们举例说 - 在一个Web服务上,你有一个名为DoSomethingComplicated(param1,...,param6)的函数暴露给世界.显然,首先为AddNumbers()之类的简单函数编写测试是微不足道的 - 但是当函数位于调用堆栈的顶部时,如此?
你还做前期设计吗?显然你仍然想做'架构'设计 - 例如,一个流程图显示IE与IIS交谈,它通过WCF与Windows服务进行通信,该服务与SQL数据库进行通信...显示所有SQL表及其字段的ERD,等......但是课堂设计呢?课程之间的相互作用等?你是在预先设计这个,还是继续编写存根代码,在你进行时重构交互,直到整个事物连接起来并且看起来它会起作用?
任何建议都非常感谢
我正在开发一个Excel VBA宏,它将获取一些excel文件,擦除/清理它,并生成一个包含2张的工作簿 - 第1页是原始的"脏"文件,第2页是干净地擦除的文件.
由于我们现在有10种不同的格式,并且在路上40+ ..我想保存这个输出为给定的文件集,然后写一个单元测试,它采取原始输入,运行我们的宏,然后比较宏的输出到我们保存的预期输出.
然后,当我们进行维护时,我们可以快速轻松地运行我们的单元测试,以确保我们不会破坏已经工作的任何东西.
这是我第一次使用VBA.我搜索框架或插件,并找不到多少帮助.我确实找到了一个比较2个excel电子表格的函数 - 所以我把那部分放下了.但现在我需要弄清楚如何实际编写和执行这个单元测试.编写单元测试应该非常简单 - 但我该如何执行呢?我不想在电子表格上放一个按钮来说明"运行单元测试"...在VBA/Excel中是否有办法只运行一个任意函数,所以我只能说右键单击我的UnitTest函数并做'跑'?
关于我的单元测试计划的任何其他反馈也将受到重视.再次感谢.
首先 - 这并不意味着'这是一个更好,无知的非离子战争线'...而是,我通常需要帮助做出一个架构决定/论证提出给我的老板.
跳过细节 - 我只是很想知道并找到任何已经完成Shell与[插入通用编程语言(解释))性能比较的人的结果,例如C#或Java ......
令人惊讶的是,我花了一些时间在谷歌搜索这里找不到任何这些数据.有没有人在不同的用例中做过这些比较; 点击一个数据库就像在一个XYX#循环中执行不同类型的SQL(Oracle pref,但MSSQL会这样做)查询,例如任何CRUD操作 - 并且也没有命中数据库而只是常规的50k循环类型比较进行不同类型的计算和那种性质的东西?
特别是 - 就目前而言,我需要比较从shell脚本命中Oracle DB,比如说C#(同样,任何被解释的GPPL都可以,甚至像Python这样的更高级别的GPPL).但我还需要了解标准编程计算/指令/等...
在你问'为什么不自己写一个快速测试之前?答案是:我一直是Windows开发人员,我的整个生活/职业生涯,对Shell脚本的知识非常有限 - 更不用说*nix作为一个整体....所以从这里有经验丰富的人提问的问题就是因为我们处于接近普遍的最后期限紧缩状态,因此它是有益的,更不用说节省时间了;).
所以 - 管理层正在努力推动在所有应用程序中进行单元测试 - 并最终进入完整的TDD /持续集成/自动构建模式(我希望).在这一点上,我们只关心让每个人使用单元测试开发应用程序.我想从基础开始.
我不会说谎 - 我在任何单位测试方面都不是专家,但我确实有足够的理解来开始基础知识的倡议,并允许我们成长为一个团队.我真的很想从你所有的专家那里得到一些评论和批评我的攻击计划.它是一个由小型商店中约10名开发人员组成的团队,这为利用敏捷开发方法和最佳实践提供了一个很好的机会.
首先 - 该团队主要由中级开发人员组成,他们有几个初级开发人员和一个高级开发人员,所有人都没有接触过单元测试.培训将是一个半月会议,每次大约30-60分钟(可能最终运行一小时,我猜,也许更频繁地使用它们).我们将继续这些会议,直到有理由阻止他们让别人赶上他们自己的"家庭作业"和经验 - 但推动将始终如一.
无论如何 - 这是我提出的课程计划.好吧,前两个至少.您的专家就课程的实际内容或结构等提出的任何建议都会很棒.评论和批评非常感谢.非常感谢.
如果这篇文章"太多"无法在此处发布或通读,我深表歉意.我认为对于希望首先进入单元测试的SO用户来说,这将是一个很好的主题.也许你可以跳到"课程计划"部分 - 再次感谢所有人.
CLIFF注意事项 - 我发现这篇帖子非常冗长和丑陋,所以这里有悬崖笔记 - 第1课将是'你好世界单元测试' - 第2课将打开我最近的应用程序的解决方案,并展示如何应用每个"世界你好"在现实生活中的例子......非常感谢大家对您给了我迄今..反馈只是wantd强调的是第2课其实是要具有现实生活的生产单元测试它,因为许多建议我这样做,当它是我的计划从开始=)
单元测试课程计划
概观
为什么单元测试?看起来像是一堆额外的工作 - 为什么呢?
•成为自己命运的主人.我们的大多数用户都没有真正的UAT,不幸的是,他们倾向于在生产中进行一次测试.通过单元测试,我们可以大大降低与此相关的风险,特别是在我们创建足够的测试数据并考虑尽可能多的顶级输入时.虽然不是防止所有错误的"银弹" - 这是你的第一道防线 - 一条巨大的前线,可与SB冠军巨人队相媲美.
•单元测试实施良好的设计和架构实践.这是"暴力的精神病患者维护你的代码并知道你住在哪里".你根本无法编写经过单元测试的低质量代码
•你有多少次没有重构臭代码,因为你太害怕破坏某些东西?自动化测试消除了这种恐惧,使重构变得更加容易,从而使代码更易读,更易于维护.
•底线 - 维护变得更容易和更便宜.编写单元测试所花费的时间现在可能成本很高 - 但是它节省你的时间已经被证明是一次又一次更有价值.这是自动测试代码的首要原因.它给了我们信心,使我们能够对系统进行更加雄心勃勃的改变,否则我们可能不得不降低需求,甚至根本不采取任何措施.
术语审查
•单元测试 - 测试最低级别的单个工作单元.EG - 测试单个函数可以流经的所有可能的代码路径.
•集成测试 - 测试您的单元如何协同工作.例如 - 运行一个"作业"(或一系列函数调用),使用已知输入执行大量工作 - 然后在最后查询数据库并断言值是您对这些已知输入的期望(而不是必须眼球在某个网页上的网格,例如进行功能测试).
•伪造 - 假冒是一种对象,其目的是用于您的测试.它允许您轻松地不测试您不想测试的代码.您不必调用您不想要的代码(如数据库调用),而是使用假对象来"伪造"该DB调用,并且可能从XML/Excel文件或模拟框架中读取数据.o模拟 - 一种你对其发表断言声明的假货.o Stub - 一种用作占位符代码的伪造,因此您可以跳过数据库调用,但不要对其进行断言
教训
第一课 - Hello Worlds
•Hello World单元测试 - 我将创建一个经过单元测试的"hello world"控制台应用程序.将在会议期间动态创建此应用程序,在Visual Studio …