我是Xunit和AutoFixture的新手,他写的理论如下:
[Theory, AutoData]
public void Some_Unit_Test(List<MyClass> data)
{
// Test stuff
}
Run Code Online (Sandbox Code Playgroud)
MyClass看起来像:
public class MyClass
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这将导致AutoFixture创建每个属性具有随机值的项目列表。很好,但是我希望该IsActive属性始终为真。
我可以在每次测试开始时将其设置为true,但我猜有一种更聪明的方法。我看了看InlineData,ClassData,PropertyData,甚至Inject()但没有相当似乎适合。
我该如何改善?
假设我有一个从 SELECT 查询返回数据的存储过程。我希望根据我传递的参数对这些结果进行稍微不同的切割。我想知道是设计多个存储过程(仅使用一个参数或不使用参数来执行此操作(例如 GetXByDate 或 GetXByUser))更好,还是使用一个具有多个参数的存储过程(例如 GetX)来执行此操作更好?
第一个选项的优点是它更简单并且可能更快,但缺点是查询的本质在存储过程中重复,并且需要在多个位置进行维护。
第二个选项的优点是查询仅出现一次,但缺点是查询更复杂并且更难以排除故障。
您在解决方案中使用什么以及为什么?
我在Reporting Services 2005中使用XML数据源功能,但在丢失数据方面存在一些问题.当一行中第一列没有值时,SSRS会忽略整个列!
Web方法请求非常简单:
<Query>
<Method Name="GetIssues"
Namespace="http://www.mycompany.com/App/">
</Method>
<SoapAction>http://www.mycompany.com/App/GetIssues</SoapAction>
<ElementPath IgnoreNamespaces="true">*</ElementPath>
</Query>
Run Code Online (Sandbox Code Playgroud)
同样,响应非常简单:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetIssuesResponse xmlns="http://www.mycompany.com/App/">
<GetIssuesResult>
<Issue>
<Title>ABC</Title>
<RaisedBy />
<Action>Do something</Action>
</Issue>
<Issue>
<Title>ABC</Title>
<RaisedBy>Jeff Smith</RaisedBy>
<Action>Do something</Action>
</Issue>
</GetIssuesResult>
</GetIssuesResponse>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
在此示例中,RaisedBy列将完全为空.如果'问题'被反转,所以RaisedBy首先有一个值,没有问题.有任何想法吗?
ASP.NET跟踪似乎非常不稳定.有时它会跟踪,有时则不会.
我用我的ASCX跟踪......
Trace.Write("等等");
我的web.config看起来如下......(在WSS3中)我首先确保SharePoint允许页面级别跟踪...
<SafeMode MaxControls="200" CallStack="true" DirectFileDependencies="10" TotalFileDependencies="50" AllowPageLevelTrace="true">
Run Code Online (Sandbox Code Playgroud)
这是我的ASP.NET跟踪元素......
<trace enabled="true" localOnly="false" pageOutput="true" writeToDiagnosticsTrace="true" />
Run Code Online (Sandbox Code Playgroud)
我的System.Diagnostics跟踪......
<system.diagnostics>
<trace autoflush="true" indentsize="4" >
<listeners>
<add name="listen" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\asptrace\log.txt" />
<add name="listen2" type="System.Web.WebPageTraceListener, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</listeners>
</trace>
Run Code Online (Sandbox Code Playgroud)
有什么明显我想念的吗?
我有一个业务用户尝试编写自己的SQL查询以获取项目统计报告(例如任务数量,里程碑等).查询开始声明80多列的临时表.然后,在将近500行代码中,临时表中有大约70个UPDATE语句,每个代码都包含自己的一组业务规则.它使用临时表中的SELECT*完成.
由于时间限制和"其他因素",这种情况已经匆忙投入生产,现在我的团队仍然坚持支持它.性能是令人震惊的,虽然由于一些整洁,它很容易阅读和理解(虽然代码气味是令人讨厌的).
我们应该关注哪些关键领域,以加快速度并遵循良好做法?
CAML难以学习,难以使用,除了使用CAML查询之外,还有更好的方法从MOSS获得结果吗?并不是指速度较慢的Web服务,也不是指速度较慢的对象模型.
我有一些问题,取消注册一些事件接收者形成一个内容类型.内容类型和接收器由我自己部署和注册,因此我不会尝试删除任何MOSS内置或内部事件接收器.
我尝试使用以下代码片段将其归档:
using (SPSite site = new SPSite("http://wssdev06/"))
{
using (SPWeb web = site.RootWeb)
{
// web.AllowUnsafeUpdates = true;
SPContentType type = web.AvailableContentTypes[<ContentTypeName>];
while (type.EventReceivers.Count > 0)
{
type.EventReceivers[0].Delete();
}
type.Update();
// web.AllowUnsafeUpdates = false;
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,命令"type.Update()"抛出一个异常,告诉我无法修改集合.正如您在代码中看到的,我已经尝试了不同的方法来解决这个问题,因为允许不安全的更新或使用提升的权限运行此代码.但我总是得到同样的例外.
那么我做错了什么?
我正在学习LINQ to XML,并且需要找到具有特定属性的元素的存在.目前我正在使用:
XElement groupCollectionXml = XElement.Parse(groupCollection.Xml);
IEnumerable<XElement> groupFind =
from vw in groupCollectionXml.Elements("Group")
where (string) vw.Attribute("Name") == groupName
select vw;
if (groupFind.Count() == 0)
return false;
else
return true;
Run Code Online (Sandbox Code Playgroud)
我知道有一种更简洁的方法,可能使用Any(),但我不知道如何重写查询以使用它.有没有人有一些好的建议?谢谢.
昨天我在Codeplex中创建了一个新项目.我创建了从Visual Studio到我分配的TFS服务器的连接,并成功上传了我的解决方案.今天我想再次连接到Codeplex TFS服务器来处理解决方案.当我尝试打开它时,我收到错误:
Team Foundation Server https://tfs06.codeplex.com/目前不存在或无法访问.
远程服务器返回错误:(407)需要代理身份验证.
我正在使用的企业环境确实使用代理身份验证,但昨天这不是问题.关于它为什么起作用的任何想法以及如何让它现在起作用?
sharepoint ×3
.net ×2
moss ×2
sql ×2
xml ×2
asp.net ×1
autofixture ×1
caml ×1
codeplex ×1
content-type ×1
events ×1
linq ×1
linq-to-xml ×1
refactoring ×1
soap ×1
sql-server ×1
tfs ×1
trace ×1
unit-testing ×1
web-services ×1
wss ×1
xunit.net ×1