<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
<response uri=\"/crm/private/xml/Potentials/updateRecords\">
<result>
<message>***TEST***Record(s) updated successfully</message>
<recorddetail>
<FL val=\"Id\">414100000000000000</FL>
<FL val=\"Created Time\">2012-03-30 16:54:03</FL>
<FL val=\"Modified Time\">2012-04-11 16:53:48</FL>
<FL val=\"Created By\"><![CDATA[Bayer]]></FL>
<FL val=\"Modified By\"><![CDATA[Bayer]]></FL>
</recorddetail>
</result>
</response>
Run Code Online (Sandbox Code Playgroud)
这是Zoho的一般性回复,说明我的记录已成功更新(减去测试部分和伪造的ZohoID.)我一直试图让我的C#程序能够制作那种风格的xml文档,因为当我发布的内容时zoho它的风格实际上非常相似.但我只是无法弄清楚如何使它工作这是他们的网站上的一个例子.
<Leads>
<row no="1">
<FL val="Lead Source">Web Download</FL>
<FL val="First Name">contacto 1</FL>
<FL val="Last Name">apellido</FL>
<FL val="Email">testing@testing.com</FL>
<FL val="Title">Manager</FL>
<FL val="Phone">1234567890</FL>
<FL val="Home Phone">0987654321</FL>
<FL val="Other Phone">1212211212</FL>
<FL val="Fax">02927272626</FL>
<FL val="Mobile">292827622</FL>
</row>
</Leads>
Run Code Online (Sandbox Code Playgroud)
我试图用C#中的单元测试来复制它,但是它给了我各种各样的错误..我已经失去了我尝试过的所有不同的方式,但我会发布我现在拥有的内容和错误它扔了.
[Test]
public void TestMethod()
{
XmlDocument doc = new XmlDocument();
XmlDeclaration declare = doc.CreateXmlDeclaration("1.0", null, null); …Run Code Online (Sandbox Code Playgroud) 我制作了一个加载大量计算机信息的程序.在Form_Load事件中,我初始化了3(该数字将增长)信息面板.有一堆单位信息似乎使程序加载相当慢.我试图通过从WMI切换到使用Native调用来加快速度,这帮助了很多.很快,我也将发布网络信息.我曾经加载那个面板,但我暂时禁用了它,直到我解决了其他面板中的错误.因此,虽然我学习如何使用一个单独的线程来更新我的电池信息,我想,我也许可以在我单位信息面板创建单独的线程,以便它可能会加载速度更快.我不知道我的任何信息会导致并发问题,但我可以解决这个问题.
我想从小开始,所以如果我改变这个
private void Form1_Load(object sender, EventArgs e)
{
unitInformationPanel1.PopulateUnitInformation();
batteryInformationPanel1.InitializeBatteries();
magStripeReaderPanel1.SetupPointOfSale();
}
Run Code Online (Sandbox Code Playgroud)
对此
private void Form1_Load(object sender, EventArgs e)
{
Thread infoThread = new Thread(new ThreadStart(unitInformationPanel1.PopulateUnitInformation));
infoThread.Start();
batteryInformationPanel1.InitializeBatteries();
magStripeReaderPanel1.SetupPointOfSale();
}
Run Code Online (Sandbox Code Playgroud)
当填充单位信息完成时,信息线程会被终止吗?或者将该线程创建移动到PopulateUnitInformation中会更好吗?这是它的样子.
public void PopulateUnitInformation()
{
unitModelLabel.Text = Properties.Settings.Default.UnitModelString;
serialNumberLabel.Text = Properties.Settings.Default.UnitSerialString;
biosVersionLabel.Text = UnitBios.GetBiosNumber();
osLabel.Text = OS.getOSString();
cpuLabel.Text = UnitCpu.GetCpuInfo();
var hdd = HddInfo.GetHddInfo();
diskNameLabel.Text = hdd.Name;
diskCapacityLabel.Text = hdd.Capacity;
diskFirmwareLabel.Text = hdd.Firmware;
memoryLabel.Text = MemoryInformation.GetTotalMemory();
NetworkPresenceInformation.GetAdapatersPresent();
biometricLabel.Text = BiometricInformation.IsPresent ? "Present" : "Not Present";
var networkAdaptersPresense = NetworkPresenceInformation.GetAdapatersPresent(); …Run Code Online (Sandbox Code Playgroud) 所以我不记得为我创建的新类进行单元测试.我尽力坚持TDD,但有时我会忘记.我很擅长运行测试(因为它只是一个按钮)所以有一种方法可以扫描所有类的命名空间,并检查它们是否来自已知的类.
例如.我有一个Contact课程.我有3个子类联系(运输,计费,服务)我有一个单元测试所有3.让我们说从现在起一个月我决定从联系人派出另一个班级.我非常擅长记得运行我的单元测试,但在这种情况下,我希望它只能通过1次测试来提醒我为我的新联系类编写单元测试.就像是.
[TestMethod, TestCategory("Contact")]
public void TestAllContactsAccountedFor()
{
foreach(class c in theNamespace)
{
bool subclassOfContact = c is Contact;
if (subclassOfContact)
{
bool knownSubclass = (c is CustomerShippingContact) || (c is CustomerBillingContact) || (c is CustomerServiceContact);
Assert.IsTrue(knownSubclass);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样,如果我忘记进行测试,它将无法通过此测试,然后我会考虑它.有什么想法吗?
考虑我的日志记录类
void LogWriter::InitLogWriter(void)
{
wcout.flush();
wcerr.flush();
COUT_BACKUP = wcout.rdbuf(); // save original cout buffer
CERR_BACKUP = wcerr.rdbuf(); //save original cerr buffer
FileStreamOpen = false;
switch(m_nTraceLvl)
{
case OffLevel:
StopOutput();
break;
case ErrorLevel:
OutputErrorsToFile(s_TraceFile);
break;
case DetailLevel:
OutputAllToFile(s_TraceFile);
break;
default:
StopOutput();
break;
}
wcout << "Initialize Log Writer" << endl;
}
void LogWriter::OutputAllToFile(TCHAR* fileName)
{
wstreambuf* fb = GetFileBufferStream(fileName);
wcout.rdbuf(fb); // push wcout buffer to file
wcerr.rdbuf(fb); // push cerr buffer to file
FileStreamOpen = true;
}
void LogWriter::OutputErrorsToFile(TCHAR* fileName)
{ …Run Code Online (Sandbox Code Playgroud)