我在以下代码段中有两个相同的字节数组:
/// <summary>
///A test for Bytes
///</summary>
[TestMethod()]
public void BytesTest() {
byte[] bytes = Encoding.UTF8.GetBytes(Properties.Resources.ExpectedPacketData);
TransferEventArgs target = new TransferEventArgs(bytes);
byte[] expected = Encoding.UTF8.GetBytes(Properties.Resources.ExpectedPacketValue);
byte[] actual;
actual = target.Bytes;
Assert.AreEqual(expected, actual);
}
Run Code Online (Sandbox Code Playgroud)
两个数组都是相同的字节.在这种情况下,为什么Assert.AreEqual会失败?
如果你有一个Bitmap对象需要传递给众多方法(大约10个),最后到一个事件,它将在它被使用后最终被处理掉,是否(性能明智)将它传递给每一个那些方法通过引用而不是值?
按值传递,对象被复制,而不是通过引用传递.
(在这种情况下,性能至关重要.应用程序需要尽可能快地运行.)
我正在开发Windows应用商店应用程序(Windows 8).
我需要根据存储在应用程序数据中的数据和地址发送电子邮件,而无需用户输入数据或地址.
实现它的正确/简单方法是什么?
EitanB
多年来,我们使用以下代码在基类中为我们的DAL进行功能测试设置数据库,这对我们来说非常有效.
/// <summary>
/// Initializes the test class by creating the integration database.
/// </summary>
[TestInitialize]
public virtual void TestInitialize()
{
DataContext = new DataContext(ConnectionString);
CleanupPreviousTestRunDatabases();
if (DataContext.Database.Exists())
{
DataContext.Database.Delete();
}
DataContext.Database.Create();
DataContext.Database.ExecuteSqlCommand(String.Format(Strings.CreateLoginCommand, DatabaseUserName, DatabasePassword));
DataContext.Database.ExecuteSqlCommand(String.Format("CREATE USER {0} FOR LOGIN {0}", DatabaseUserName));
DataContext.Database.ExecuteSqlCommand(String.Format("EXEC sp_addrolemember 'db_owner', '{0}'", DatabaseUserName));
}
Run Code Online (Sandbox Code Playgroud)
但是,使用Entity Framework不会设置数据库的所有组件,我们希望捕获EF DAL模型与实际数据库之间的差异.
我们使用SSDT工具/ Visual Studio数据库项目来完成所有数据库工作,我知道你可以编写SQL单元测试,在那些SQL单元测试中,我已经看到了基于数据库项目设置和创建数据库的能力本身.这是我想要做的,但是来自我们的其他功能测试库.
我可以引用这些库并编写一些设置代码,但我正在寻找的是:
a)如何提供用于部署的数据库项目?
b)如何在代码而不是app.config中指定连接字符串,例如使用localdb而不是动态命名的数据库?
namespace Product.Data.Tests
{
using Microsoft.Data.Tools.Schema.Sql.UnitTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class FunctionalTest
{
[TestInitialize]
public virtual void TestInitialize()
{
SqlDatabaseTestClass.TestService.DeployDatabaseProject();
SqlDatabaseTestClass.TestService.GenerateData();
}
}
} …
Run Code Online (Sandbox Code Playgroud) c# unit-testing entity-framework visual-studio sql-server-data-tools
我正试图围绕领域驱动开发.我想确保我有一个良好的基础和理解它,所以如果在这里避免使用AutoMapper或类似的建议会很好.我的架构目前涉及以下内容:
WCF服务负责持久性(使用实体框架)和服务器端验证.它将POCO转换为DTO,并将DTO转移到客户端.
客户接收DTO并将其转换为POCO.转换POCO和DTO的类在服务和客户端之间共享.
POCO的实现IValidatableObject
和INotifyPropertyChanged
服务器和客户端都使用它们,但它们不用于数据传输.DTO是,只是不包含任何行为的财产袋.
(1)问题#1.此架构是否适用于域驱动设计.
(2)问题#2.POCO是否适合包含导航属性?对于POCO来说,在DDD架构中包含导航属性对我来说真的是错误的,因为对我来说,拥有可能序列化或不序列化的导航属性是没有意义的.拥有专门的DTO对我来说更有意义.
例如,这是POCO/DTO在我的架构中的样子.
// Enforces consistency between a POCO and DTO
public interface IExample
{
Int32 Id { get; set; }
String Name { get; set; }
}
// POCO
public class Example : IExample, INotifyPropertyChanged, IValidatableObject
{
private int id;
private string name;
public Int32 Id {
get { return this.id; }
set {
this.id = value;
OnPropertyChanged("Id");
}
}
public String Name {
get { return …
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我有4个TextBoxes,2个TextBox用于输入开始时间,2个TextBox用于输入结束时间.
用户将始终输入完成的时间,因此输入将始终为11:30,12:45,依此类推.
如何在开始和结束时间之间获得小时和分钟的差异?
我正在开发一个框架,一些对象有很长的名字.我不是很喜欢这个,但我也不喜欢缩略词.我试图为"EventModelSocket"提供一个较短的名称,基本上是实现各种事件的.Net套接字类的包装器,以及发送文件,对象等的方法.由于这个,一些对象的名称很长例如,"EventModelSocketObjectReceivedEventArgs".
我已经尝试过从词库到字典的所有内容,坐在这里思考数小时.
当你遇到这样的情况时,命名的最佳方法是什么?
所以我一直在我的网站上分享关于上述主题标题的一些想法,关于快速,不安全的像素访问.一位先生给了我一个粗略的例子,说明他是如何用C++做的,但这对C#没有帮助,除非我可以互操作,而且互操作也很快.我在互联网上找到了一个使用MSDN帮助编写的课程,以便不安全地访问像素.这门课速度非常快,但速度不够快.这是班级:
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
namespace DCOMProductions.Desktop.ScreenViewer {
public unsafe class UnsafeBitmap {
Bitmap bitmap;
// three elements used for MakeGreyUnsafe
int width;
BitmapData bitmapData = null;
Byte* pBase = null;
public UnsafeBitmap(Bitmap bitmap) {
this.bitmap = new Bitmap(bitmap);
}
public UnsafeBitmap(int width, int height) {
this.bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb);
}
public void Dispose() {
bitmap.Dispose();
}
public Bitmap Bitmap {
get {
return (bitmap);
}
}
private Point PixelSize {
get …
Run Code Online (Sandbox Code Playgroud) 我的项目中有一个名为'UIWizard.cs'的UserControl,以及一个名为'UIWizardToolboxBitmap.bmp'的24位Bitmap,它的构建操作设置为'Embedded Resource'.我确认它确实存在于清单中:
.mresource public BitFlex.Windows.Forms.Resources.UIWizardToolboxBitmap.bmp
{
// Offset: 0x00000000 Length: 0x00000336
}
Run Code Online (Sandbox Code Playgroud)
我试过这些属性声明:
[ToolboxBitmap(typeof(UIWizard), "BitFlex.Windows.Forms.Resources.UIWizardToolboxBitmap.bmp")]
public partial class UIWizard : UserControl {
[ToolboxBitmap(typeof(UIWizard), "UIWizardToolboxBitmap.bmp")]
public partial class UIWizard : UserControl {
[ToolboxBitmap(typeof(UIWizard), "UIWizardToolboxBitmap")]
public partial class UIWizard : UserControl {
Run Code Online (Sandbox Code Playgroud)
当我将我的库设置为'Release Build'并在另一个项目中引用它并使用Choose Items手动添加ToolBox项时...它仍然无法正确显示我的位图.我想避免使用绝对路径,因为这是一个源控制项目,并不是每个人都会使用相同的映射.
由于缺乏关于ToolBoxBitmapAttribute的文档,MSDN确实没有多大帮助,并且Web上的大多数内容都非常模糊.
我正在为我们的大型企业应用程序构建业务层,目前我们正在进行500个单元测试.该方案是我们有两个public
方法,public AddT(T)
以及public UpdateT(T)
双方作出的内部通话private AddOrUpdateT(T)
,因为有很多的核心逻辑是在两者之间是相同的,但不是全部; 它们是不同的.
因为它们是独立的公共API(不管私有实现),我为每个API编写了单元测试,即使它们是相同的.这可能看起来像
[TestMethod]
public void AddT_HasBehaviorA()
{
}
[TestMethod]
public void UpdateT_HasBehaviorA()
{
}
Run Code Online (Sandbox Code Playgroud)
目前这个特定的业务对象大约有30个单元测试添加和用于更新40次单元测试,其中更新测试的30一样的附加测试.
这是正常的,还是我应该将常见行为抽象为单独测试的公共帮助器类,而这两个API只是使用该辅助类而不是具有实现的私有方法?
什么被认为是这些情况的最佳做法?
c# ×10
unit-testing ×3
.net ×2
performance ×2
assert ×1
datetime ×1
dto ×1
gdi+ ×1
poco ×1
ref ×1
tdd ×1
toolbox ×1
windows-8 ×1
winrt-async ×1
winrt-xaml ×1