我有一个单元测试TestMakeAValidCall()
.它测试我的手机应用程序拨打有效电话.
我即将编写另一个TestShowCallMessage()
需要为测试进行有效调用的测试.只是打电话给TestMakeAValidCall()
那个测试是不好的形式?
作为参考,这是我的TestMakeAValidCall()
测试.
[TestMethod]
public void TestMakeAValidCall()
{
//Arrange
phone.InCall = false;
phone.CurrentNumber = "";
// Stub the call to the database
data.Expect(x => x.GetWhiteListData()).
Return(FillTestObjects.GetSingleEntryWhiteList());
// Get some bogus data
string phoneNumber = FillTestObjects.GetSingleEntryWhiteList().
First().PhoneNumber;
// Stub th call to MakeCall() so that it looks as if a call was made.
phone.Expect(x => x.MakeCall(phoneNumber)).
WhenCalled(invocation =>
{
phone.CurrentNumber = phoneNumber;
phone.InCall = true;
});
//Act
// Select the phone number
deviceControlForm.SelectedNumber …
Run Code Online (Sandbox Code Playgroud) 我有一组嵌套得相当深的数据访问类.
要构建其中5个列表,需要AutoFixture超过2分钟.每单元测试2分钟就可以了.
如果我手工编写它们,我只会编写我需要的代码,因此它会更快地初始化.有没有办法告诉AutoFixture只做一些属性,所以它不能花时间在我不需要的结构区域?
例如:
public class OfficeBuilding
{
public List<Office> Offices {get; set;}
}
public class Office
{
public List<PhoneBook> YellowPages {get; set;}
public List<PhoneBook> WhitePages {get; set;}
}
public class PhoneBook
{
public List<Person> AllContacts {get; set;}
public List<Person> LocalContacts {get; set;}
}
public class Person
{
public int ID { get; set; }
public string FirstName { get; set;}
public string LastName { get; set;}
public DateTime DateOfBirth { get; set; }
public char Gender { get; set; …
Run Code Online (Sandbox Code Playgroud) 所以,我有一个要删除的bug
foreach (XElement x in items.Elements("x"))
{
XElement result = webservice.method(x);
if (/*condition based on values in result*/)
{
x.Remove();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是调用x.Remove()会改变foreach,如果有两个元素("x"),并且第一个被删除,则循环不会到达第二个x元素.
那我该如何循环呢?或者是否应该以另一种方式重写?
我有几个列,我从Int更改为BigInt.
我打开了我的EF模型并做了一个'从数据库更新模型',并期望看到这些列现在是Int64s.但他们仍然是Int32s.
(为了确定,我跑了好几次.)
我仔细检查了我的数据库,列绝对是BigInts.
那么......"从数据库更新模型"不适用于更改数据类型吗?是否需要手动应用?
我更新了我的ClickOnce应用程序,然后当用户运行时,系统会询问他们是否要安装新版本.
我在一个高度控制的环境中工作.当更新可用时,必须安装(旧版本无法确保向后兼容数据库).
另一种选择是如果按下跳过则运行失败(也可以正常工作).
我需要一些方法来阻止他们运行旧版本的应用程序.
c# clickonce visual-studio-2008-sp1 .net-3.5 visual-studio-2008
我正在尝试创建一个WCF数据服务ServiceOperation,它在服务器端进行分组,然后将数据发送到客户端.
当我尝试调用它(甚至连接到服务)时,我收到一个错误.它说它无法构建一个接口.
我使用的唯一界面是IGrouping.
什么是这个界面的实际类?
更新:
我在调试示例应用程序时检查了类型,它告诉我它是:
System.Linq.Lookup<TKey,TElement>.Grouping
Run Code Online (Sandbox Code Playgroud)
但它的装配是什么?
注意:我检查了理解QUOTED_IDENTIFIER并且它没有回答我的问题.
我让我的DBA运行我在Prod服务器上制作的索引(他们查看并批准了它).
它就像我想要的那样加速了我的查询.但是,我开始遇到这样的错误:
作为开发人员,我通常会忽略这些设置.它从来都不重要.(9年以上).好吧,今天很重要.
我去看了一个失败的sprocs,它在创建sproc之前有这个:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Run Code Online (Sandbox Code Playgroud)
任何人都可以从应用程序开发人员的角度告诉我这些set语句的作用是什么? (在我的索引创建语句之前添加上面的代码并没有解决问题.)
注意:以下是我的索引的示例:
CREATE NONCLUSTERED INDEX [ix_ClientFilerTo0]
ON [ClientTable] ([Client])
INCLUDE ([ClientCol1],[ClientCol2],[ClientCol3] ... Many more columns)
WHERE Client = 0
CREATE NONCLUSTERED INDEX [IX_Client_Status]
ON [OrderTable] ([Client],[Status])
INCLUDE ([OrderCol1],[OrderCol2],[OrderCol3],[OrderCol4])
WHERE [Status] <= 7
GO
Run Code Online (Sandbox Code Playgroud) 是否可以在声明后修改ItemGroup的元数据.
例如:
<ItemGroup>
<SolutionToBuild Include="$(BuildProjectFolderPath)\MySolution.sln">
<Targets></Targets>
<Properties></Properties>
</SolutionToBuild>
</ItemGroup>
<Target Name="BuildNumberOverrideTarget">
<!--Code to get the version number from a file (removed)-->
<!--Begin Pseudo Code-->
<CodeToChangeItemGroupMetaData
ItemToChange="%(SolutionToBuild.Properties)"
Condition ="'%(SolutionToBuild.Identity)' ==
'$(BuildProjectFolderPath)\MySolution.sln'"
NewValue="Version=$(Version)" />
<!--End Pseudo Code-->
</Target>
Run Code Online (Sandbox Code Playgroud)
我希望有一种方法不要求我删除该项目然后重新声明它.
谢谢你的回答.Vaccano
我已经读过一个变量永远不应该做多件事.重载变量以执行多个操作是不好的.
因此,我最终编写如下代码:(使用customerFound
变量)
bool customerFound = false;
Customer foundCustomer = null;
if (currentCustomer.IsLoaded)
{
if (customerIDToFind = currentCustomer.ID)
{
foundCustomer = currentCustomer;
customerFound = true;
}
}
else
{
foreach (Customer customer in allCustomers)
{
if (customerIDToFind = customer.ID)
{
foundCustomer = customer;
customerFound = true;
}
}
}
if (customerFound)
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
但在内心深处,我有时想写这样的代码:(没有customerFound
变量)
Customer foundCustomer = null;
if (currentCustomer.IsLoaded)
{
if (customerIDToFind = currentCustomer.ID)
{
foundCustomer = currentCustomer;
}
}
else
{
foreach …
Run Code Online (Sandbox Code Playgroud) 我有这个代码:
Type leftType = workItem[LeftFieldName].GetType();
Run Code Online (Sandbox Code Playgroud)
然后我想声明一个该类型的变量:
leftType someVar;
Run Code Online (Sandbox Code Playgroud)
那可能吗?
c# ×6
.net ×3
.net-3.5 ×1
autofixture ×1
c#-3.0 ×1
c#-4.0 ×1
clickonce ×1
foreach ×1
msbuild ×1
sql ×1
sql-server ×1
unit-testing ×1
xelement ×1