我们正在构建一个复杂的Android应用程序,其中包含许多活动中的许多屏幕和工作流程.我们的工作流程类似于您在银行的ATM机上看到的工作流程,例如,有一个Activity登录过渡到主菜单Activity,可以根据用户的选择转换到其他活动.
由于我们有如此多的工作流程,因此我们需要创建跨多个活动的自动化测试,以便我们可以从头到尾测试工作流程.例如,使用ATM示例,我们希望输入有效的PIN码,验证是否将我们发送到主菜单,选择提取现金,验证我们是否在提取现金屏幕等等,并最终找到自己回到主菜单或"登出".
我们玩过Android(例如ActivityInstrumentationTestCase2)和Positron附带的测试API ,但似乎都没有超出单一范围的测试能力Activity,虽然我们可以在这些工具中找到一些用于某些单元测试的实用工具,但他们赢了不能满足我们测试多个活动的测试场景的需求.
我们对xUnit框架,脚本,GUI记录器/回放等持开放态度,并对任何建议表示感谢.
我觉得这应该很简单,但我的大脑正在短路.如果我有表示当前用户的一个对象,并希望查询除了当前用户的所有用户,我怎么能做到这一点,考虑到当前用户有时会nil?
这就是我现在正在做的事情:
def index
@users = User.all
@users.delete current_user
end
Run Code Online (Sandbox Code Playgroud)
我不喜欢的是我正在对查询结果进行后处理.除了感觉有点不对外,如果我将查询转换为运行,我认为这不会很好will_paginate.有关如何使用查询执行此操作的任何建议?谢谢.
我们使用JAXB生成Java类,并且遇到了生成多个方法名称不正确的一些情况.例如,我们期望getPhysicians得到的地方getPhysicien.我们如何定制JAXB如何将特定方法复数化?
架构:
<xs:complexType name="physician">
<xs:sequence>
...
</xs:sequence>
</xs:complexType>
<xs:complexType name="physicianList">
<xs:sequence>
<xs:element name="Physician"
type="physician"
minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)
生成的Java代码:
...
public class PhysicianList {
...
@XmlElement(name = "Physician")
protected List<Physician> physicien;
...
public List<Physician> getPhysicien() {
if (physicien == null) {
physicien = new ArrayList<Physician>();
}
return this.physicien;
}
Run Code Online (Sandbox Code Playgroud)
更新
Blaise已经回答了这个问题.但是,我不希望在XML模式中混合诸如JAXB自定义之类的问题.所以对于那些具有相同偏好的人来说,这里有一个JAXB绑定文件,它实现了与Blaise建议的相同的东西,使JAXB自定义不受模式的影响:
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="2.0">
<jaxb:bindings schemaLocation="myschema.xsd">
<jaxb:bindings node="//xs:complexType[@name='physicianList']//xs:element[@name='Physician']">
<jaxb:property name="physicians"/>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
Run Code Online (Sandbox Code Playgroud) 我正在研究基于JUnit的Android远程自动化测试框架(测试在android外部运行,与其中的代码进行交互).这一切都运行得很好,但我遇到的一个问题是,当我自动启动一个新的模拟器时,屏幕开始锁定.这似乎会影响我的测试能够运行,而且,我想观看测试运行(点击按钮,输入文本等).如果我手动启动模拟器并解锁其屏幕,一切正常.
有没有办法在Android中以编程方式解锁屏幕?Java API,命令行或shell命令等都可以.除此之外,也许有一种方法可以启动模拟器解锁?
我有一个带有REST API的Spring Boot应用程序,使用Jackson进行JSON视图配置.它工作得很好,我可以获得Spring Boot的所有优点.
但是,我需要添加一个类似但具有不同设置的其他REST API.例如,除了其他方面,它需要一个不同的Jackson对象映射器配置,因为JSON看起来会有点不同(例如没有JSON数组).这只是一个例子,但有很多不同之处.每个API都有不同的上下文(例如/ api/current和/ api/legacy).
理想情况下,我想要将两个MVC配置映射到这些不同的上下文,而不必放弃启动时任何自动连接的东西.
到目前为止,所有我能够接近的是使用两个调度程序servlet,每个servlet都有自己的MVC配置,但这导致Boot丢弃了我自动得到的一大堆东西,基本上无法使用启动的原因.
我无法将应用程序分解为多个应用程序.
答案"你不能用Boot做到这一点并且仍能获得所有的魔力"是一个可以接受的答案.看起来它应该能够处理这个问题.
我正在努力使用HATEOAS实现Spring MVC 3.x RESTful服务的正确方法.考虑以下约束:
目前我有一个很好的组合MVC应用程序没有HATEOAS.域实体是纯POJO,没有嵌入任何视图或web/rest概念.例如:
class User {
public String getName() {...}
public String setName(String name) {...}
...
}
Run Code Online (Sandbox Code Playgroud)
我的控制器也很简单.它们提供路由和状态,并委托Spring的视图解析框架.注意我的应用程序支持JSON,XML和HTML,但没有域实体或控制器具有嵌入的视图信息:
@Controller
@RequestMapping("/users")
class UserController {
@RequestMapping
public ModelAndView getAllUsers() {
List<User> users = userRepository.findAll();
return new ModelAndView("users/index", "users", users);
}
@RequestMapping("/{id}")
public ModelAndView getUser(@PathVariable Long id) {
User user = userRepository.findById(id);
return new ModelAndView("users/show", "user", user);
}
}
Run Code Online (Sandbox Code Playgroud)
所以,现在我的问题 - 我不确定支持HATEOAS的干净方法.这是一个例子.假设当客户端要求JSON格式的用户时,它会出现如下:
{
firstName: "John",
lastName: "Smith"
}
Run Code Online (Sandbox Code Playgroud)
我们还要说当我支持HATEOAS时,我希望JSON包含一个简单的"自我"链接,然后客户端可以使用它来刷新对象,删除它或其他东西.它可能还有一个"朋友"链接,指示如何获取用户的朋友列表:
{
firstName: "John",
lastName: "Smith",
links: [ …Run Code Online (Sandbox Code Playgroud) 我想在将Devise的user_signed_in?方法添加到相关的视图模板后,尝试获得之前传递的rspec"视图规范" .模板看起来像这样:
<% if user_signed_in? %>
Welcome back.
<% else %>
Please sign in.
<% endif %>
Run Code Online (Sandbox Code Playgroud)
该视图规范是经过看起来是这样的:
require "spec_helper"
describe "home/index.html.erb" do
it "asks you to sign in if you are not signed in" do
render
rendered.should have_content('Please sign in.')
end
end
Run Code Online (Sandbox Code Playgroud)
添加调用后产生的错误user_signed_in?是:
1) home/index.html.erb asks you to sign in if you are not signed in
Failure/Error: render
ActionView::Template::Error:
undefined method `authenticate' for nil:NilClass
# ./app/views/home/index.html.erb:1:in `_app_views_home_index_html_erb__1932916999377371771_70268384974540'
# ./spec/views/home/index.html.erb_spec.rb:6:in `block (2 levels) in …Run Code Online (Sandbox Code Playgroud) 假设我有两个表,书籍和评论.评论有一个列,星星,可以有1到5之间的值.一本书可以有很多评论.
我如何选择所有书籍,以便使用Criteria API返回每本书的最高和最低3评论(而不是所有评论)?
如果Criteria API不具备,我可以使用其他建议,如HQL,SQL等.
我有一个我发布的路线DELETE:
user_authorization_path(@user, authorization)
Run Code Online (Sandbox Code Playgroud)
它命中我的控制器,控制器删除资源,然后发出重定向:
redirect_to edit_user_path(params[:user_id])
Run Code Online (Sandbox Code Playgroud)
结果是重定向路由错误:
ActionController::RoutingError (No route matches [DELETE] "/users/1/edit")
Run Code Online (Sandbox Code Playgroud)
我可以在日志中看到rails正在做正确的事情,直到重定向,它试图发出另一个DELETE而不是GET:
Started DELETE "/users/1/authorizations/12"...
...
Redirected to http://localhost:3000/users/1/edit
Completed 302 Found in 8ms (ActiveRecord: 0.2ms)
Started DELETE "/users/1/edit"...
ActionController::RoutingError (No route matches [DELETE] "/users/1/edit")
Run Code Online (Sandbox Code Playgroud)
Chrome调试程序会显示初始请求:
Request URL:http://localhost:3000/users/1/authorizations/12
Request Method:DELETE
Status Code:302 Found
Run Code Online (Sandbox Code Playgroud)
以及它的重定向:
Request URL:http://localhost:3000/users/1/edit
Request Method:GET
Status Code:404 Not Found
Run Code Online (Sandbox Code Playgroud)
所以这似乎是浏览器正确地遵循重定向,但是rails忽略了GET重定向调用,而是DELETE在404中使用了哪个结果(因为DELETE该资源不支持 - 这无论如何都是错误的).
如果我只是在重定向的URL上执行'GET',它就可以正常工作.
关于Rails删除后的重定向我错过了什么?谢谢.
我正在构建一个由Postgres支持的Spring Boot应用程序,使用Flyway进行数据库迁移.我一直在遇到无法产生迁移的问题,这些迁移在Postgres和嵌入式单元测试数据库中都会产生预期的结果(即使启用了Postgres兼容模式).所以我正在考虑使用嵌入式Postgres进行单元测试.
我遇到了一个看起来很有前景的嵌入式postgres实现,但是没有真正看到如何将其设置为仅在Spring Boot的单元测试框架中运行(用于测试Spring Data存储库).如何使用上述工具或Postgres的替代嵌入版本来设置它?
spring ×3
android ×2
java ×2
spring-boot ×2
spring-mvc ×2
activerecord ×1
automation ×1
devise ×1
flyway ×1
hateoas ×1
hibernate ×1
http-delete ×1
jaxb ×1
jaxb2 ×1
postgresql ×1
redirect ×1
rest ×1
routes ×1
rspec ×1
ruby ×1
xml ×1