我正在使用Fiddler Web Debugger工具版本4.4.4.8.
我已向www.google.com提出请求,fiddler会显示已发送请求并收到回复.
我如何知道并显示何时发送请求以及何时收到响应?开头/结束日期不在Fiddler的左栏中.
有什么设置吗?
我看到有一些计时器:http://fiddler.wikidot.com/timers
如何显示/使用它们?
在Console应用程序中,我正在使用Log4Net,在Main方法中我得到了logger对象.现在,我想通过让所有类继承自具有ILog属性并且应该由Property Injection而不是Constructor Injection设置的BaseClass来使这个日志对象在我的所有类中可用.
我正在使用AutoFac IoC容器,如何将我的日志对象注入我的每个类的Log属性?
实现这一目标的最佳/最简单方法是什么?
有没有办法自动解决类型?
以下是我的测试应用程序:
namespace ConsoleApplication1
{
class Program
{
static ILog Log;
static IContainer Container;
static void Main(string[] args)
{
InitializeLogger();
InitializeAutoFac();
// the below works but could it be done automatically (without specifying the name of each class)?
Product.Log = Container.Resolve<ILog>();
// tried below but didn't inject ILog object into the Product
Container.Resolve<Product>();
RunTest();
Console.ReadLine();
}
private static void RunTest()
{
var product = new Product();
product.Do();
}
private static void InitializeAutoFac()
{
var …Run Code Online (Sandbox Code Playgroud) 在TDD中,您选择一个测试用例并实现该测试用例然后您编写足够的生产代码以便测试通过,重构代码并再次选择一个新的测试用例并继续循环.
我在这个过程中遇到的问题是TDD说你只编写了足够的代码来传递你刚写的测试.我所指的确切地说,如果一个方法可以有100万个测试用例,你能做什么?!显然没有写100万个测试用例?!
让我通过下面的例子更清楚地解释一下我的意思:
internal static List<long> GetPrimeFactors(ulong number)
{
var result = new List<ulong>();
while (number % 2 == 0)
{
result.Add(2);
number = number / 2;
}
var divisor = 3;
while (divisor <= number)
{
if (number % divisor == 0)
{
result.Add(divisor);
number = number / divisor;
}
else
{
divisor += 2;
}
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码返回给定数字的所有素数因子.ulong有64位,这意味着它可以接受0到18,446,744,073,709,551,615之间的值!
那么,当生产功能可以有数百万个测试用例时,TDD如何工作?!
我的意思是有多少测试用例可以编写,所以我可以说我使用TDD来实现这个生产代码?
TDD中的这个概念说你应该只编写足够的代码来通过测试,这对我来说似乎是错误的,如上面的例子所示?
什么时候足够了?
我自己的想法是,我只挑选一些测试用例,例如高频段,低频段和更多例如5个测试用例,但这不是TDD,是吗?
非常感谢您对此示例的TDD想法.
我有一个通用列表如下
public static readonly List<Customer> Customers = new List<Customer>();
Run Code Online (Sandbox Code Playgroud)
我正在使用以下方法:
.Add
.Find
.FirstOrDefault
Run Code Online (Sandbox Code Playgroud)
最后2个是LINQ扩展.
我需要使这个线程安全的能够运行容器类的多个实例.
怎么实现呢?
如何从单元内测试中获取单元测试名称?
我在BaseTestFixture类中有以下方法:
public string GetCallerMethodName()
{
var stackTrace = new StackTrace();
StackFrame stackFrame = stackTrace.GetFrame(1);
MethodBase methodBase = stackFrame.GetMethod();
return methodBase.Name;
}
Run Code Online (Sandbox Code Playgroud)
我的Test Fixture类继承自基类:
[TestFixture]
public class WhenRegisteringUser : BaseTestFixture
{
}
Run Code Online (Sandbox Code Playgroud)
我有以下系统测试:
[Test]
public void ShouldRegisterThenVerifyEmailThenSignInSuccessfully_WithValidUsersAndSites()
{
string testMethodName = this.GetCallerMethodName();
//
}
Run Code Online (Sandbox Code Playgroud)
当我从Visual Studio中运行它时,它会按预期返回我的测试方法名称.
当由TeamCity运行时,_InvokeMethodFast()将返回,这似乎是TeamCity在运行时为自己使用而生成的方法.
那么我怎样才能在运行时获得测试方法名称?
我知道在简单查询中,Distinct和Group By的性能和执行计划几乎相同.
例如
SELECT Name FROM NamesTable GROUP BY Name
SELECT DISTINCT Name FROM NamesTable
Run Code Online (Sandbox Code Playgroud)
但我在某些情况下读过他们的表现会有所不同,例如在子查询中等等?
那么,你能举一些例子或解释一些他们的表现不同的场景吗?
非常感谢
我有一个Web Api方法,它应返回一个xml数据,但它返回字符串:
public class HealthCheckController : ApiController
{
[HttpGet]
public string Index()
{
var healthCheckReport = new HealthCheckReport();
return healthCheckReport.ToXml();
}
}
Run Code Online (Sandbox Code Playgroud)
它返回:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
<myroot><mynode></mynode></myroot>
</string>
Run Code Online (Sandbox Code Playgroud)
我添加了这个映射:
config.Routes.MapHttpRoute(
name: "HealthCheck",
routeTemplate: "healthcheck",
defaults: new
{
controller = "HealthCheck",
action = "Index"
});
Run Code Online (Sandbox Code Playgroud)
如何使它只返回xml位:
<myroot><mynode></mynode></myroot>
Run Code Online (Sandbox Code Playgroud)
如果我只使用MVC,我可以使用下面的内容,但Web API不支持"内容":
[HttpGet]
public ActionResult Index()
{
var healthCheckReport = new HealthCheckReport();
return Content(healthCheckReport.ToXml(), "text/xml");
}
Run Code Online (Sandbox Code Playgroud)
我还在WebApiConfig类中添加了以下代码:
config.Formatters.Remove(config.Formatters.JsonFormatter);
config.Formatters.XmlFormatter.UseXmlSerializer = true;
Run Code Online (Sandbox Code Playgroud) 我有一个Web API应用程序,我使用下面的url进行批量(数十或数百)插入和更新,只返回OK或Failed.
POST api/v1/products
Run Code Online (Sandbox Code Playgroud)
它映射到我的动作:
public HttpResponseMessage PostProducts(PostProductsRequest request)
{
...
}
Run Code Online (Sandbox Code Playgroud)
PostProductsRequest对象包含List类型的Products属性.
如果属性的Id属性存在,我会更新它,否则它会指示插入.
但我只是想知道我是否应该只使用Post for Bulk Inserts和Put for Bulk Updates,不确定.每种方法的最佳实践和优势是什么?
如何为批量插入和更新设计一个Restful API?
我有一个按钮控件,我需要删除附加到其Click事件的所有事件处理程序.
怎么可能呢?
Button button = GetButton();
button.Click.RemoveAllEventHandlers();
Run Code Online (Sandbox Code Playgroud) 我有下面的代码,我需要将一个字符串转换为一个也从String指定的类型:
Type t = Type.GetType("System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]");
object d = Convert.ChangeType("2012-02-23 10:00:00", t);
Run Code Online (Sandbox Code Playgroud)
我得到以下错误消息:
Invalid cast from 'System.String' to 'System.Nullable`1[[System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'.
Run Code Online (Sandbox Code Playgroud)
怎么会很好的可能?
我知道一种丑陋的方法是使用if来检查类型是否可以为空:
Type possiblyNullableType = Type.GetType("System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]");
var underlyingType = Nullable.GetUnderlyingType(possiblyNullableType);
Object result;
// if it's null, it means it wasn't nullable
if (underlyingType != null)
{
result = Convert.ChangeType("2012-02-23 10:00:00", underlyingType);
}
Run Code Online (Sandbox Code Playgroud)
会有更好的方法吗?
谢谢,