我正在为我的 java 项目编写 JUnit 测试用例,并使用 Coverage Tool 来检查代码行是否被覆盖。问题是:我有两个对象列表。我需要使用assertTrue 或任何其他可能的断言语句来比较对象的结果是否相等。我通过使用下面的断言语句收到类似断言错误的错误。有什么解决方案可以轻松比较两个列表吗?
//actual
List<ProjectData> actuals = ProjectManagerDao.getProjects("x", "y", "z");
// expected
List<ProjectData> expecteds = new ArrayList<>();
ProjectData p1 = new ProjectData();
p1.setId("a");
p1.setName("b");
expecteds.add(p1);
assertTrue(JsonProvider.getGson().toJson(actuals).equalsIgnoreCase(JsonProvider.getGson().toJson(expecteds)));
//or
assertTrue(actuals.equalIgnoreCase(expeteds);//Not working for list of objects but working for comparing two strings
Run Code Online (Sandbox Code Playgroud)
这与Java 比较两个列表不同,因为我需要能够在 jUnit 中断言相等,而不仅仅是比较列表。
我正在以复杂的方式做的逻辑.
我只需要在存储过程中执行此查询:
select Sizes, SUM(Quantity)
from tbl_SizeBreakup
where (Brand=@brand)
and (Combo in ('1','2')) ...
Run Code Online (Sandbox Code Playgroud)
组合我必须在C#中使用SQL参数传递
DataSet dt = new DataSet();
cmd = new SqlCommand();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "sp_Accessories";
cmd.Connection = con;
cmd.Parameters.AddRange(
new SqlParameter[] {
new SqlParameter("@Mode",mode),
new SqlParameter("@Combo",combo),
}}
Run Code Online (Sandbox Code Playgroud)
所以,如果我传递1个参数,按预期工作.我应该传递的组合是一个string[](字符串数组).数组长度可以取决于用户在UI中选择的任何内容.
我的问题是,如何传递string[]给new SqlParameter("@Combo",combo)?
我的存储过程..
ALTER proc [dbo].[sp_Accessories]
(
@Mode varchar(50)=null,
@id int=null,
@brand varchar(50)=null,
@department varchar(MAX)=null,
@season varchar(50)=null,
@groupname varchar(MAX)=null,
@styles varchar(50)=null,
@combo varchar(50)=null,
@combo_color nvarchar(max)=null,
)
as
if @Mode='getsizewise'
begin
select …Run Code Online (Sandbox Code Playgroud) int k=7;
int index1=5;
Run Code Online (Sandbox Code Playgroud)
arrayNames 有11个值.
if (k - index1 > 1)
{
arrayNames1 = arrayNames.GetRange(index1, k);
}
Run Code Online (Sandbox Code Playgroud)
但它会抛出一个错误,因为" 偏移和长度超出了数组的范围,或者计数大于从索引到源集合末尾的元素数量. "