我正在测试一个进行Web API调用的服务的方法.HttpClient如果我还在本地运行Web服务(位于解决方案中的另一个项目中),则使用正常工作正常进行单元测试.
但是,当我签入我的更改时,构建服务器将无法访问Web服务,因此测试将失败.
我已经为我的单元测试设计了一种方法,通过创建一个IHttpClient接口并实现我在我的应用程序中使用的版本.对于单元测试,我使用模拟的异步post方法创建一个模拟版本.这是我遇到问题的地方.我想HttpStatusResult为这个特定的测试返回一个OK .对于另一个类似的测试,我将返回一个糟糕的结果.
测试将运行但永远不会完成.它挂在等待.我是异步编程,代表和Moq本身的新手,我一直在搜索SO和谷歌一段时间学习新东西,但我似乎仍然无法解决这个问题.
这是我试图测试的方法:
public async Task<bool> QueueNotificationAsync(IHttpClient client, Email email)
{
// do stuff
try
{
// The test hangs here, never returning
HttpResponseMessage response = await client.PostAsync(uri, content);
// more logic here
}
// more stuff
}
Run Code Online (Sandbox Code Playgroud)
这是我的单元测试方法:
[TestMethod]
public async Task QueueNotificationAsync_Completes_With_ValidEmail()
{
Email email = new Email()
{
FromAddress = "bob@example.com",
ToAddress = "bill@example.com",
CCAddress = "brian@example.com",
BCCAddress = "ben@example.com",
Subject = "Hello",
Body = "Hello …Run Code Online (Sandbox Code Playgroud) 我正面临与转换double为相关的问题float.实际上,我将float类型存储23423424666767在数据库中,但是当我们从下面的代码中获取数据库中的数据时getInfoValueNumeric(),它就是double类型.我们获得的价值在于2.3423424666767E13表格.
那么我们如何获得float格式数据23423424666767呢?
2.3423424666767E13 to 23423424666767
public void setInfoValueNumeric(java.lang.Double value) {
setValue(4, value);
}
@javax.persistence.Column(name = "InfoValueNumeric", precision = 53)
public java.lang.Double getInfoValueNumeric() {
return (java.lang.Double) getValue(4);
}
Run Code Online (Sandbox Code Playgroud) 我们的系统,当使用protobuf-net序列化一条消息时,有时但不是每次都会引发下面暴露的错误.错误的原因是什么?如何缓解错误?
请注意我们DeserializeWithLengthPrefix已经在使用.
更新:相关代码在这里
private const PrefixStyle PrefixStyleInPlace = PrefixStyle.Fixed32;
public static byte[] SerializeObjectToByteArray<TSerializable>(TSerializable source) where TSerializable : class
{
byte[] result;
using (var memoryStream = SerializeObjectToStream(source))
{
result = memoryStream.ToArray();
}
return result;
}
public static TResult DeserializeObject<TResult>(byte[] source)
{
TResult result;
using (var memoryStream = new MemoryStream(source))
{
memoryStream.Position = 0;
result = Serializer.DeserializeWithLengthPrefix<TResult>(memoryStream,PrefixStyleInPlace);
}
return result;
}
public static MemoryStream SerializeObjectToStream<TSerializable>(TSerializable source) where TSerializable : class
{
var memoryStream = new MemoryStream();
Serializer.SerializeWithLengthPrefix(memoryStream, source,PrefixStyleInPlace);
memoryStream.Position = …Run Code Online (Sandbox Code Playgroud) 我使用下面的代码.两者都在我的应用程序中工作正常.
情况1.
List<String> coreModules =
new ArrayList<String>(Arrays.asList(
"TOOLBAR_TO_DO_LIST",
"TOOLBAR_PROPERTY",
"TOOLBAR_PEOPLE",
"TOOLBAR_INSURANCE",
"TOOLBAR_BATCH",
"TOOLBAR_INFORMATION_REFERENCE",
"TOOLBAR_LR_PROPERTY",
"TOOLBAR_CASE_FOLDER",
"TOOLBAR_INSPECTION_RESULT",
"TOOLBAR_MY_OFFICE"));
Run Code Online (Sandbox Code Playgroud)
案例2.
List<String> coreModules =
Arrays.asList(
"TOOLBAR_TO_DO_LIST",
"TOOLBAR_PROPERTY",
"TOOLBAR_PEOPLE",
"TOOLBAR_INSURANCE",
"TOOLBAR_BATCH",
"TOOLBAR_INFORMATION_REFERENCE",
"TOOLBAR_LR_PROPERTY",
"TOOLBAR_CASE_FOLDER",
"TOOLBAR_INSPECTION_RESULT",
"TOOLBAR_MY_OFFICE");
Run Code Online (Sandbox Code Playgroud)
但我有一些问题:
我在构建EJB会话bean 时遇到了麻烦.
packages无法找到以下内容:
import javax.ejb.LocalBean;
import javax.ejb.Stateful;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
Run Code Online (Sandbox Code Playgroud)
一些解决方案暗示将库j2ee.jar和javaee.jar 添加到java构建路径中.
我正在使用jdk-7u75-windows-x64,java_ee_sdk-7-windows-ml并且在给定位置找不到任何这些库($ JAVA_HOME\lib).我在Windows 7 x64机器上使用eclipse(kepler)
我想在java中创建自定义注释DirtyChecking.就像我想使用此注释比较两个字符串值,并在比较后将返回一个boolean值.
例如:我将放置@DirtyCheck("newValue","oldValue")属性.
假设我创建了一个界面:
public @interface DirtyCheck {
String newValue();
String oldValue();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
我有一个与java中修饰符transient之前的关键字使用相关的问题private.
变量声明:
transient private ResourceBundle pageResourceBundle;
Run Code Online (Sandbox Code Playgroud)
我的班级看起来像这样:
public class LoginViewModel extends AbstractViewModel {
transient private ResourceBundle pageResourceBundle;
@AfterCompose
public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {
initializeLoginValues();
boolean timeout = BooleanUtils.toBoolean(getHttpServletRequest().getParameter("timeout"));
if (timeout) {
Messagebox.show(pageResourceBundle.getText("MSG_SESSION_HAS_EXPIRED_PLEASE_LOGIN"), pageResourceBundle.getText("LABEL_ALERT"),
Messagebox.OK, Messagebox.ERROR);
}
view.getPage().setTitle(CsdcLicence.get().getApplicationName());
}
Run Code Online (Sandbox Code Playgroud)
我有一些问题.
1.为什么transient在私有变量之前使用关键字?
2.使用此关键字的目的是什么?
为什么添加@EnableAutoConfiguration到以下spring-boot应用程序会导致它无法创建entityManagerFactory?如果我删除@EnableAutoConfiguration一切正常.任何人都可以阐明这种行为吗?
package test.builder;
import javax.sql.DataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.Database;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;
import test.builder.jpa.entity.Builder;
import test.builder.jpa.repository.BuilderRepository;
@Configuration
// @EnableAutoConfiguration
@EnableJpaRepositories("test.builder")
@PropertySource("classpath:application.properties")
public class BootApp implements CommandLineRunner {
private static Logger logger = LoggerFactory.getLogger(BootApp.class);
@Value("${spring.datasource.driverClassName}")
private String databaseDriverClassName;
@Value("${spring.datasource.url}")
private String datasourceUrl;
@Value("${spring.datasource.username}")
private String databaseUsername; …Run Code Online (Sandbox Code Playgroud) 我面临与Search JQL相关的问题。我正在使用查询
(issuefunction in issuesInEpics('key = ABCD-24911') and issuetype=Feature)
Run Code Online (Sandbox Code Playgroud)
在Jira中,它返回一些记录,但是当我使用此查询时,JiraRestClient它不起作用,而是返回零记录。
以下查询工作正常:
issuefunction in issuesInEpics("resolution is not empty") and issuetype = Feature
Run Code Online (Sandbox Code Playgroud)
代码段:
String query="issuefunction in issuesInEpics('key = ABCD-24911') and issuetype=Feature";
Integer resultsLength=50,startAt=0;
JiraRestClient.getSearchClient().searchJql(query,resultsLength,startAt,null);
Run Code Online (Sandbox Code Playgroud)
我的Maven依赖关系:
<dependency>
<groupId>com.atlassian.jira</groupId>
<artifactId>jira-rest-java-client-api</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>com.atlassian.jira</groupId>
<artifactId>jira-rest-java-client-core</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>com.atlassian.fugue</groupId>
<artifactId>fugue</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>com.atlassian.httpclient</groupId>
<artifactId>atlassian-httpclient-spi</artifactId>
<version>0.17.0-m01</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我找到解决方案。
我试图NAPTR在Go中查询记录.看来DNS"网络"库中提供的基础知识不会让我访问.因此我正在考虑使用(参见文档),但找不到任何基本的例子.是否有关于替代方案的建议或有关如何查询的一些见解NAPTR?
java ×7
c# ×2
annotations ×1
arraylist ×1
arrays ×1
asynchronous ×1
collections ×1
dns ×1
double ×1
eclipse ×1
ejb ×1
floating ×1
go ×1
java-ee ×1
jira ×1
jira-plugin ×1
keyword ×1
list ×1
modifier ×1
moq ×1
protobuf-net ×1
rest ×1
spring ×1
spring-boot ×1
transient ×1
unit-testing ×1