c#中odp.net 4.0利用odac操作oracle数据库学习(五)
简介:上篇文章中我们讲述了对RawImageMetaData业务操作类的封装就完成了,
接下来我们需要调用,进行单元测试,
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
UnitRawImageMetaDataInfo单元测试类:
对RawImageMetaData底层操作类的单项查询,单项的添加,删除,修改以及批量的添加,删除,修改进行单元测试
/********************************************************
*文件所属:北京******公司
*文件名称:原始影像数据的元数据信息管理模块单元测试
*文件描述:对原始影像数据的元数据信息管理模块所有操作的业务逻辑后代代码的单元测试
* 创建人:PengZhen
*创建时间:2013-11-26 10:58:19
********************************************************/
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.IO;
using System.Drawing;
using BDSS.BLL;
using BDSS.Model.DAL.Model;
using System.Reflection;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
using System.Data;
namespace BDSS.UnitTest
{
/// <summary>
/// UnitRawImageMetaDataInfo 的摘要说明
/// </summary>
[TestClass]
public class UnitRawImageMetaDataInfo
{
public UnitRawImageMetaDataInfo()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
private TestContext testContextInstance;
/// <summary>
///获取或设置测试上下文,该上下文提供
///有关当前测试运行及其功能的信息。
///</summary>
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
#region 附加测试特性
//
// 编写测试时,可以使用以下附加特性:
//
// 在运行类中的第一个测试之前使用 ClassInitialize 运行代码
// [ClassInitialize()]
// public static void MyClassInitialize(TestContext testContext) { }
//
// 在类中的所有测试都已运行之后使用 ClassCleanup 运行代码
// [ClassCleanup()]
// public static void MyClassCleanup() { }
//
// 在运行每个测试之前,使用 TestInitialize 来运行代码
// [TestInitialize()]
// public void MyTestInitialize() { }
//
// 在每个测试运行完之后,使用 TestCleanup 来运行代码
// [TestCleanup()]
// public void MyTestCleanup() { }
//
#endregion
/// <summary>
/// 根据数据编号获取原始影像数据的元数据信息实体信息
/// </summary>
/// <author>PengZhen</author>
/// <time>2013-11-26 14:16:51</time>
[TestMethod]
public void GetModel()
{
RawImageMetaData objRIMD = new RawImageMetaData();
RawImageMetaDataInfo objRIMDI = objRIMD.GetModel("4d456b58-9b16-40b6-99cb-5ffd8f5a5187");
}
/// <summary>
/// 增加一条数据
/// </summary>
/// <author>PengZhen</author>
/// <time>2013-11-26 10:57:27</time>
[TestMethod]
public void Insert()
{
RawImageMetaData objRIMD = new RawImageMetaData();
RawImageMetaDataInfo objRIMDI = new RawImageMetaDataInfo();
Type t = objRIMDI.GetType();
string strID = string.Empty;
foreach (PropertyInfo pi in t.GetProperties())
{
string name = pi.Name;
//object value1 = pi.GetValue(objRIMDI, null);
//xmltype数据
if (name.Equals("PRODUCT_USE"))
{
string str = "<name><a id=\"1\" value=\"some values\">test</a></name>";
pi.SetValue(objRIMDI, str, null);
}
//ST_GEOMETRY(空间数据)
else if (name.Equals("ENVELOPE"))
{
string str = "POINT ( 1.00000000 1.00000000)";
pi.SetValue(objRIMDI, str, null);
}
//编号
else if (name.Equals("ID"))
{
string str = Common.Helper.SysHelper.NewGUID;
pi.SetValue(objRIMDI, str, null);
}
//状态
else if (name.Equals("STATUS"))
{
pi.SetValue(objRIMDI, "0", null);
}
//Timestamp(时间隔)
else if (pi.PropertyType == typeof(DateTime))
{
pi.SetValue(objRIMDI, DateTime.Now, null);
}
//Blob(影像数据)
else if (pi.PropertyType == typeof(byte[]))
{
string pPath = @"C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg";
FileInfo fi = new FileInfo(pPath);
byte[] Byte = imageToByteArray(pPath);
pi.SetValue(objRIMDI, Byte, null);
}
//字符串
else if (pi.PropertyType == typeof(string))
{
pi.SetValue(objRIMDI, "1", null);
}
//NUMBER所有类型
else if (pi.PropertyType == typeof(decimal))
{
pi.SetValue(objRIMDI, 1.23m, null);
}
}
Assert.IsTrue(objRIMD.Insert(objRIMDI), "添加失败!");
}
/// <summary>
/// 批量添加
/// </summary>
/// <author>PengZhen</author>
/// <time>2013-11-26 13:47:47</time>
[TestMethod]
public void BatchInsert()
{
RawImageMetaData objRIMD = new RawImageMetaData();
List<RawImageMetaDataInfo> listRIMDI = new List<RawImageMetaDataInfo>();
for (int i = 0; i < 2; i++)
{
RawImageMetaDataInfo objRIMDI = new RawImageMetaDataInfo();
Type t = objRIMDI.GetType();
string strID = string.Empty;
foreach (PropertyInfo pi in t.GetProperties())
{
string name = pi.Name;
//object value1 = pi.GetValue(objRIMDI, null);
//xmltype数据
if (name.Equals("PRODUCT_USE"))
{
string str = "<name><a id=\"1\" value=\"some values\">test</a></name>";
pi.SetValue(objRIMDI, str, null);
}
//ST_GEOMETRY(空间数据)
else if (name.Equals("ENVELOPE"))
{
string str = "POINT ( 2.00000000 2.00000000)";
pi.SetValue(objRIMDI, str, null);
}
//编号
else if (name.Equals("ID"))
{
string str = Common.Helper.SysHelper.NewGUID;
pi.SetValue(objRIMDI, str, null);
}
//状态
else if (name.Equals("STATUS"))
{
pi.SetValue(objRIMDI, "1", null);
}
//Timestamp(时间隔)
else if (pi.PropertyType == typeof(DateTime))
{
pi.SetValue(objRIMDI, DateTime.Now, null);
}
//Blob(影像数据)
else if (pi.PropertyType == typeof(byte[]))
{
string pPath = @"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg";
FileInfo fi = new FileInfo(pPath);
byte[] Byte = imageToByteArray(pPath);
pi.SetValue(objRIMDI, Byte, null);
}
//字符串
else if (pi.PropertyType == typeof(string))
{
pi.SetValue(objRIMDI, "2", null);
}
//NUMBER所有类型
else if (pi.PropertyType == typeof(decimal))
{
pi.SetValue(objRIMDI, 1.23m, null);
}
}
listRIMDI.Add(objRIMDI);
}
Assert.IsTrue(objRIMD.BatchInsert(listRIMDI), "批量添加失败!");
}
/// <summary>
/// 删除一条数据
/// </summary>
/// <author>PengZhen</author>
/// <time>2013-11-26 13:50:51</time>
[TestMethod]
public void Delete()
{
RawImageMetaData objRIMD = new RawImageMetaData();
Assert.IsTrue(objRIMD.Delete("35bf72ff-57c3-436f-a671-ebf67d5c4c7a"), "删除失败!");
}
/// <summary>
/// 批量删除数据
/// </summary>
/// <author>PengZhen</author>
/// <time>2013-11-26 13:50:55</time>
[TestMethod]
public void BatchDelete()
{
RawImageMetaData objRIMD = new RawImageMetaData();
string strArrId = "20b8b827-699d-479d-ac8f-30af25d6c395,a2163247-17c9-472e-b886-a986f71b22f8";
Assert.IsTrue(objRIMD.BatchDelete(strArrId), "批量删除失败!");
}
/// <summary>
/// 修改一条数据
/// </summary>
/// <author>PengZhen</author>
/// <time>2013-11-26 13:53:06</time>
[TestMethod]
public void Update()
{
RawImageMetaData objRIMD = new RawImageMetaData();
RawImageMetaDataInfo objRIMDI = new RawImageMetaDataInfo();
//RawImageMetaDataInfo objRIMDI1 = objRIMD.GetModel("cb398854-9506-4fc2-872c-263d07b16cab");
Type t = objRIMDI.GetType();
string strID = string.Empty;
foreach (PropertyInfo pi in t.GetProperties())
{
string name = pi.Name;
//object value1 = pi.GetValue(objRIMDI, null);
//xmltype数据
if (name.Equals("PRODUCT_USE"))
{
string str = "<name><a id=\"2\" value=\"values some\">test2</a></name>";
pi.SetValue(objRIMDI, str, null);
}
//ST_GEOMETRY(空间数据)
else if (name.Equals("ENVELOPE"))
{
string str = "POINT ( 3.00000000 3.00000000)";
pi.SetValue(objRIMDI, str, null);
}
//编号
else if (name.Equals("ID"))
{
string str = "cdce75a3-6d4e-4f91-a67f-31612bef2f86";
pi.SetValue(objRIMDI, str, null);
}
//状态
else if (name.Equals("STATUS"))
{
pi.SetValue(objRIMDI, "0", null);
}
//Timestamp(时间隔)
else if (pi.PropertyType == typeof(DateTime))
{
pi.SetValue(objRIMDI, DateTime.Now, null);
}
//Blob(影像数据)
else if (pi.PropertyType == typeof(byte[]))
{
string pPath = @"C:\Users\Public\Pictures\Sample Pictures\Jellyfish.jpg";
FileInfo fi = new FileInfo(pPath);
byte[] Byte = imageToByteArray(pPath);
//Byte = objRIMDI1.PRODUCT_THUMB;
pi.SetValue(objRIMDI, Byte, null);
}
//字符串
else if (pi.PropertyType == typeof(string))
{
pi.SetValue(objRIMDI, "3", null);
}
//NUMBER所有类型
else if (pi.PropertyType == typeof(decimal))
{
pi.SetValue(objRIMDI, 1.23m, null);
}
}
Assert.IsTrue(objRIMD.Update(objRIMDI), "修改失败!");
}
/// <summary>
/// 批量修改数据
/// </summary>
/// <author>PengZhen</author>
/// <time>2013-11-26 14:00:59</time>
[TestMethod]
public void BatchUpdate()
{
RawImageMetaData objRIMD = new RawImageMetaData();
List<RawImageMetaDataInfo> listRIMDI = new List<RawImageMetaDataInfo>();
for (int i = 0; i < 2; i++)
{
RawImageMetaDataInfo objRIMDI = new RawImageMetaDataInfo();
Type t = objRIMDI.GetType();
string strID = string.Empty;
foreach (PropertyInfo pi in t.GetProperties())
{
string name = pi.Name;
//object value1 = pi.GetValue(objRIMDI, null);
//xmltype数据
if (name.Equals("PRODUCT_USE"))
{
string str = "<name><a id=\"3\" value=\"values some\">test3</a></name>";
pi.SetValue(objRIMDI, str, null);
}
//ST_GEOMETRY(空间数据)
else if (name.Equals("ENVELOPE"))
{
string str = "POINT ( 4.00000000 4.00000000)";
pi.SetValue(objRIMDI, str, null);
}
//编号
else if (name.Equals("ID"))
{
string str = "29e22cbe-2ec7-40fc-8ec9-bdcb81270292";
if (i == 1)
{
str = "4d456b58-9b16-40b6-99cb-5ffd8f5a5187";
}
pi.SetValue(objRIMDI, str, null);
}
//状态
else if (name.Equals("STATUS"))
{
pi.SetValue(objRIMDI, "1", null);
}
//Timestamp(时间隔)
else if (pi.PropertyType == typeof(DateTime))
{
pi.SetValue(objRIMDI, DateTime.Now, null);
}
//Blob(影像数据)
else if (pi.PropertyType == typeof(byte[]))
{
string pPath = @"C:\Users\Public\Pictures\Sample Pictures\Koala.jpg";
FileInfo fi = new FileInfo(pPath);
byte[] Byte = imageToByteArray(pPath);
pi.SetValue(objRIMDI, Byte, null);
}
//字符串
else if (pi.PropertyType == typeof(string))
{
pi.SetValue(objRIMDI, "4", null);
}
//NUMBER所有类型
else if (pi.PropertyType == typeof(decimal))
{
pi.SetValue(objRIMDI, 1.23m, null);
}
}
listRIMDI.Add(objRIMDI);
}
Assert.IsTrue(objRIMD.BatchUpdate(listRIMDI), "批量修改失败!");
}
/// <summary>
/// 图片转为Byte字节数组
/// </summary>
/// <author>PengZhen</author>
/// <time>2013-11-22 16:46:24</time>
/// <param name="FilePath">路径</param>
/// <returns>字节数组</returns>
private byte[] imageToByteArray(string FilePath)
{
using (MemoryStream ms = new MemoryStream())
{
using (Image imageIn = Image.FromFile(FilePath))
{
using (Bitmap bmp = new Bitmap(imageIn))
{
bmp.Save(ms, imageIn.RawFormat);
}
}
return ms.ToArray();
}
}
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
好了,写到这呢,我们整个odp的学习也就完成了,以tm_raw_image_metadata_infos表为例子的一套操作也就实现了