单元测试和集成测试有什么区别?
这些测试有不同的名称吗?像一些人称单元测试功能测试等?
如果我需要一个Web服务来回传递一个复杂的对象,我是否应该选择SOAP over REST?以下是可能的SOAP消息的示例:
<soap:Envelope>
<soap:Header>
<Credentials>
<User>Joe</User>
<Password>abc123</Password>
</Credentials>
</soap:Header>
<soap:Body>
<MyComplexBusinessObject>
<Search>
<First>Joe</First>
<Last>Smith</Last>
</Search>
...
...
</MyComplexBusinessObject>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
使用REST,我会要求客户端POST以下xml并使用基本身份验证进行身份验证:
<MyComplexBusinessObject>
<Search>
<First>Joe</First>
<Last>Smith</Last>
</Search>
...
...
</MyComplexBusinessObject>
Run Code Online (Sandbox Code Playgroud)
SOAP消息稍微复杂一些,但不是很多.它们仍然是XML,但SOAP带有WSDL,大多数编程环境都会为您生成代理类.但是,我与之交谈的大多数人都说我应该使用REST,因为它更容易使用.但我不知道SOAP如何更难使用.
我错过了什么吗?
有没有办法找出上次修改存储过程或表的时间?我尝试通过SQL Management Studio检查属性,但只找到了创建日期.
谢谢!
[TestMethod]
public void SomeTestMethod()
{
string input = "some looooong input...";
var proc = new Processor()
string result = proc.DoSomething(input);
Assert.Equals("good", result);
}
Run Code Online (Sandbox Code Playgroud)
如果我正在编写一个单元测试并且我的输入非常长(例如EDI事务),那么我应该将其作为长字符串粘贴到我的测试方法中吗?
其他人建议我应该将长字符串粘贴到文件中,并将该文件视为我的测试项目中的嵌入式资源.如果我做了类似的事情,我需要为每个测试提供不同的输入,我可以看到很多文件堆积起来并变得难以维护.
有没有围绕这个的最佳做法?我应该继续将这些长字符串粘贴到我的测试方法中吗?
我经常看到示例存储库模式,如下所示:
public interface IRepository<T>
{
T GetById(int id);
IEnumerable<T> GetAllByName(string name);
}
Run Code Online (Sandbox Code Playgroud)
但是,您如何处理可能需要进行复杂搜索的案例?我不认为向界面添加许多方法会使它最终看起来像是一个好主意:
IEnumerable<T> GetAllByFirstName(string name);
IEnumerable<T> GetAllByLastName(string name);
IEnumerable<T> GetAllByFirstAndLastName(string name);
IEnumerable<T> GetAllByAddress(string name);
...
...
...
Run Code Online (Sandbox Code Playgroud) 可能重复:
Resharper的商业案例
嗨,大家好!
我刚刚毕业,我在为我的第一家公司工作.在大学期间,我的一位教授让每台计算机装满了Resharper,我很喜欢!我为自己买了个人许可证,从那以后一直在使用它.
但在我的新工作中,只有少数人(大多数是高级开发人员)正在使用Resharper.当我让我的主管为自己购买许可证时,我被击落了,因为"它不会提高1级程序员的工作效率".
我试过向他们展示Resharper只是程序员薪水的一小部分,这将使我作为程序员的生活更轻松.但不幸的是,我的言辞被置若罔闻.是否有任何案例或论据可以提交给我的主管,告诉他们这会提高我的工作效率?
谢谢!
我正在尝试删除一些日志记录依赖项,并偶然发现Castle Windsor的日志记录工具.但是,我对是否应该使用它持怀疑态度.
public class MyClass
{
public Castle.Core.Logging.ILogger Logger { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
Windsor的日志记录工具要求您将记录器作为属性公开.这真的是一个好习惯吗?我觉得我几乎打破了封装,因为通常当我重用一个组件时,我不关心它的日志记录机制,我通常不希望看到它暴露.
如果我使用使用静态类创建日志的自定义包装器,我可以将其保密.例如:
public class MyClass
{
private static MyCustomWrapper.ILogger Logger = LogManager.GetLogger(typeof(MyClass));
...
}
Run Code Online (Sandbox Code Playgroud)
我在网上搜索了我应该使用日志记录工具的原因,但我只是找到了如何使用它的文章,但不是为什么我应该使用它.我觉得我错过了这一点.暴露日志记录组件会让我感到害怕.
我想通过记录业务事件来开始监视应用程序的性能.我正在寻找与log4net或其他日志库类似的东西,但是为性能/健康监控量身定制.
我的目标是使用性能计数器发布这些业务事件,但我真的不觉得用性能计数器代码丢弃我的代码是个好主意.就像log4net抽象注销一样,是否有一个现有的库将性能/健康监控抽象到自己的库中?
我遇到了一些使用此条件的查询:
select ...
where Name like '%'
Run Code Online (Sandbox Code Playgroud)
是否有使用这样的通配符的目的?
c# ×2
sql-server ×2
t-sql ×2
unit-testing ×2
.net ×1
logging ×1
resharper ×1
rest ×1
soap ×1
web-services ×1